问题:
var a = ["aa","vv","bb"];
a.sort((a,b)=>a>b);//["aa", "vv", "bb"],没达到排序效果
var a = ["aa","vv","bb"];
a.sort((a,b)=>a>b?1:-1);//["aa", "bb", "vv"],达到排序效果
为什么???????? sort是按照返回值-1,1,0排序的么?true,false不好使么?
问题:
var a = ["aa","vv","bb"];
a.sort((a,b)=>a>b);//["aa", "vv", "bb"],没达到排序效果
var a = ["aa","vv","bb"];
a.sort((a,b)=>a>b?1:-1);//["aa", "bb", "vv"],达到排序效果
为什么???????? sort是按照返回值-1,1,0排序的么?true,false不好使么?
8 回答4.6k 阅读✓ 已解决
6 回答3.3k 阅读✓ 已解决
5 回答2.8k 阅读✓ 已解决
5 回答6.3k 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决
4 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
arr.sort(compare)
判断的依据compare(a,b)
的返回值compare( a, b) < 0
则 a 的排序在 b 之前compare( a, b) = 0
则排序不变(某些老版本的浏览器不遵守这一条)compare( a, b) > 0
则 b 在 a 前面你的问题应该是在
chrome
上出现的,当使用node
环境的时候,依然是你的第一个代码,却可以正确排序,其中的区别就是,node
用的是冒泡排序而chrome
用的是插入排序,具体你可以用下面的代码验证一下,分别在chrome
和node
上测试下,查看输出的变化如果对排序算法有疑问可以看下面这个文章
十大经典排序算法总结(JavaScript描述)
如果对各个浏览器的排序算法有兴趣可以看看下面这个文章
深入浅出 JavaScript 的 Array.prototype.sort 排序算法
当然最好的记忆就是自己亲自经历过的,自己在不同平台上做下测试,会记忆的更深一些.
最后官方的文档
MDN Array.prototype.sort()