数组相关:sort方法

219 阅读1分钟

对数组中元素进行排序,可以使用sort方法

sort方法会改变原数组的内容,需要注意

var arr = [1,2,7,3,5];

arr.sort();

console.log(arr);

浏览器的输出结果为1,2,3,5,7

sort排序是根据Unicode代码的顺序进行排序,难免遇到排序不准确的情况

 var arr = [1,2,3,11,5];

var result = arr.sort();

console.log(result);

浏览器的输出结果为11,1,2,3,5,这样的结果是不正确的,需要通过回调函数,重新进行排序

回调函数是自定义的函数,但是不是我们进行主动调用,我们负责将函数写好,浏览器在需要的时候会自己调用,此类函数为回调函数

比如function func(){

alert("需要我们自己调用");

}

func()

书写调用函数的代码为我们主动进行函数的调用,此类函数为常规函数,不是回调函数

sort方法中可以加入回调函数,进行按要求的排序

其中sort方法后的括号中可以加入自定义的回调函数,并加入形参a,b,浏览器会将元素依次通过实参赋值给a和b,进行比较,如果a>b,return 大于0的值,交换位置,如果a<b,return 小于0的值,位置不变,如果a=b,return 0,维持不变

var arr = [1,2,3,11,5];

var result = arr.sort(function(a,b){

if(a>b){

return 1;

}else if(a<b){

return -1;

}else{

return 0;

}

})

console.log(result);

浏览器按照升序排序,进行正确的排序

但是此种书写方法过于繁琐,可以简写

通过a和b做差,如果a>b,返回值为整数,交换位置,如果a<b或者a=b,返回值为负值或0,位置不变,此排序为升序,如果降序,b与a做差即可

var arr = [1,2,3,11,5];

var result = arr.sort(function(a,b){

return a-b;

})

console.log(result);