对数组中元素进行排序,可以使用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);