sort()
可以用来对数组的元素进行排序
会改变原数组,默认按照Unicode编码进行排序
所以对数字进行排序时,可能得到错误的结果。
解决办法:
自己来指定排序的规则
可以在sort() 添加一个回调函数,来指定排序
回调函数中需要定义两个行参
浏览器会根据回调函数的返回值来决定元素的顺序:
如果返回一个大于0的值,则元素会交换位置
如果返回一个小于0的值,则元素位置不变
如果返回一个0,则认为两个元素相等,也不交换位置
//未加回调函数,排序有可能出问题,如下图
var arr = [2, 6, 22, 8, 66, 9];
arr.sort();
console.log(arr);
//添加回调函数,得到的结果如下图
var arr2 = [2, 6, 22, 8, 66, 9];
arr2.sort(function (a, b) {
if (a > b) {
return 1; //前边大,交换位置
} else if (a < b) {
return -1; //前边小,不交换位置
}else{
return 0; //前后相等,不交换位置
}
//或者上边的太多,可以直接这样写
//升序
//return a-b;
//降序
//return b-a;
});
console.log(arr2);