var n =[3,4,5,6,23,34,532,1];
n.sort(); // 结果[1,23,3,34,4,5,532,6] 错误
n.sort(function(a,b){return a-b ;}); // 结果 [1,3,4,5,6,23,34,532] 正确
上面那个我理解,下面的那种书写方式是怎么理解的?
n.sort(); // 结果[1,23,3,34,4,5,532,6] 错误
n.sort(function(a,b){return a-b ;}); // 结果 [1,3,4,5,6,23,34,532] 正确
上面那个我理解,下面的那种书写方式是怎么理解的?
函数返回bool值参数a,b表示比较的2数,返回true a前,否则b。
零,如果两个参数相等。
正值,如果第一个参数比第二个参数大。
数组Array的sort(fn)方法是有参数的,该参数表示排序方式,也是一个排序依据,可以按小到大排,也可以按大到小排。上面的代码些完整的话,应该是这样的:n.sort(function(a,b){
if(typeof(a) == "number" && typeof(b) == "number"){
return (a > b) ? 1 : (a < b ? -1 : 0);
}else{
return a.localeCompare(b);
}
});
数组排序时候 对元素的大小比较就由 传进的函数来控制 也就是可以按自己的逻辑来排序元素