/**
@param {function} [compareFn]
@return {Array.<T>}
*/
Array.prototype.sort = function(compareFn) {}
/**
* Sorts an array.
* @param compareFn The name of the function used to determine the order of the elements. If omitted, the elements are sorted in ascending, ASCII character order.
*/
sort(compareFn?: (a: T, b: T) => number): T[];
可以看到该函数的参数是一个函数如果不传入参数或者参数不是一个函数那么该函数最多可以升序排列10个以内的数
var arr = [2, 412, 3213, 22, 122,222,222,2277,22898,22423432,2,9];
arr.sort();
传入的是两个参数返回值是number类型的函数
arr.sort(function (a, b) {
return a - b;
});
如果 return a- b就是求升序:因为 如果a-b大于0那么交换a和b的位置因此为升序
如果return b-a那就是降序:因为如果b-a大于0那么交换a和b的位置因此是降序
如果返回值是例如 return 1那么仅仅只是将数组进行了逆序排列相当于 reverse
如果返回值是如果 return <=0的数那么保持不变
函数内部会多次进行比较可能使用了冒泡插入等排序规则
二维数组的比较
var arr = [
{name:'小二',age:18},
{name:'小222',age:13},
{name:'小33',age:23},
];
arr.sort(function (a,b) {
// 以年龄排序
return parseFloat(a.age) - parseFloat(b.age);
});
console.log(arr);
// 比较汉字字符串排序用localcompare函数
var arr = [
{name: '小二', age: 18},
{name: '小222', age: 13},
{name: '小33', age: 23},
];
arr.sort(function (a, b) {
return a.name.localeCompare(b.name);
});
console.log(arr);