数组排序是用到 sort(),发现没达到预期效果,如下图所示
var b=[3,2,11,4,31]; console.log(b.sort()); // [11, 2, 3, 31, 4]
查了 sort() 排序方法才知道,原来是采用字符 Unicode 编码来排序的,所以数字会自动转换为字符串再排序,字符串再按顺序每个字符排序
var a=['bdf','jei','zcv','ajd','aby','aca']; console.log(a.sort()); // ["aby", "aca", "ajd", "bdf", "jei", "zcv"]
估计为了避免数字排序的问题,sort() 就增加了一个参数 sortby,可以通过函数来更改排序依据,函数例子
function sortByNumber(a,b) { return a - b }
return < 0, a 排在 b 前面 return > 0, a 排在 b 后面
return = 0, 则并排
var b=[3,2,11,4,31]; var asc=function(a,b){ return a-b; } var desc=function(a,b){ return b-a; } console.log(b.sort(asc)); console.log(b.sort(desc));
Leave a Reply