JS中sort()方法的原理

  原理

  JS中的sort()方法用于对数组进行排序,并返回数组。

  默认情况下按升序排列数组,但是是根据字符串UniCode码进行比较。sort()方法进行排序时会在每一项上调用String()转型函数,然后通过字符串UniCode码来决定顺序,即使数组的元素都是number类型,也会把它转换成字符串再比较。

  为此,sort()方法可以接受一个参数,此参数为函数,从而达到我们想要的比较效果。

 

  使用

  没有传入参数时:

var arr = [2,15,8,11,7,4];
console.log(arr.sort());  //11 15 2 4 7 8

  显而易见,这不是我们想要的效果,但是我们可以在sort()方法里面传入一个比较函数来达到我们想要的效果:

/**
     * 比较函数:接收两个参数
     * @param val1
     * @param val2
     * @returns {number}
     */
    function compare(val1,val2){
        if (val1 < val2){
            return -1;
        }else if(val1 > val2){
            return 1;
        }else {
            return 0;
        }
    }
    var arr = [2,15,8,11,7,4];
    console.log(arr.sort(compare)); //2 4 7 8 11 15

  可以把返回值1和-1换一下位置达到降序。此外,这个比较函数还可以简写成箭头函数:

var arr = [2,15,8,11,7,4];
arr.sort((a,b) => a < b ? 1:a > b ? -1:0)
console.log(arr);    //15 11 8 7 4 2

 

posted @ 2021-10-31 10:01  打遍天下吴敌手  阅读(2957)  评论(0编辑  收藏  举报