[Javascript] Array.prototype.sort

<u></u>sort方法用于对数组排序,它接受一个比较函数作为参数sort(fn(a,b))
如果a应该出现在b之前,则返回小于0的数值,
如果ab位置不变,则返回0,
如果a应该出现在b之后,则返回大于0的数值。

注意:
不能使用a>b代替(-1,0,1)来指定排序状态

['01','02','03','04','05','06','07','08','09','10','11'].sort(function(a,b){
    return a>b;
});
=> ["06", "01", "02", "03", "04", "05", "07", "08", "09", "10", "11"]

这是因为truefalse最终会被转换成数值10

正确做法

['01','02','03','04','05','06','07','08','09','10','11'].sort(function(a,b){
    return a===b?0:(a<b?-1:1);
});
=> ["01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11"]
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容