JS中的sort排序问题

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);

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_42524288/article/details/103117916