最近做项目用sort()对数组排序,发现排完后的顺序不对,搜了很多帖子,才明白了。
var values = [0,1,5,10,15];
values.sort();
alert(values) // [0,1,10,15,5]
显然不是你想要的 为啥5在最后面呢?sort函数在比较时 会调用每个数组项的toString()转型方法,即会将每一项转化为ASCII进行比较。可以使用参数保证排序的稳定性,如下
var values = [0,1,5,10,15]
function compare(a,b){
if(a>b){
return 1;
}else if(a<b){
return-1;
}else{
return 0;
}
}
values.sort(compare)
alert(values)
compare函数还可以更简化
function compare(a,b){
return a-b;
}
到此结束,随笔,菜鸡一个,欢迎喜欢前端的朋友一起交流,留个评论