Sort()语法:
/** * sortFun:可选,设置排序的逻辑,必须是函数 */ arrayObject.sort(sortFun)
注:在使用sort()函数时,如果不是传函数参数的话,会以默认的方式进行排序,即按照字符编码的顺序进行排序。
例如:
var arr = [57,34,2,5,7,9,65,857] console.log(arr.sort());
// 打印结果为[ 2, 34, 5, 57, 65, 7, 857, 9 ]
由此可见按照我们理解的数字大小来看排序就乱了
如何解决呢?
只需要往sort()函数里面传参就可以了,例如:
// 升序 function ascOrder (a, b) { return a - b } var arr = [3,4,6,76,323,21,35,54]; arr.sort(ascOrder); // 结果:[ 3, 4, 6, 21, 35, 54, 76, 323 ] // 降序 function desOrder(a, b) { return b - a } var arr = [3,4,6,76,323,21,35,54]; arr.sort(desOrder);
// 结果:[ 323, 76, 54, 35, 21, 6, 4, 3]
在上述代码中,a,b两个参数中若a<b,在排序后的数组中a应当在b之前,返回一个小于0的值;若a=b,则返回0;若a大于b,则返回一个大于0的值。