JS中sort方法有点疑惑
<script> function compare(a,b) { return a-b; } var numArr = new Array(12,23,1,4,23,34,2,5); numArr.sort(compare); for (var i = 0; i<numArr.length; i++) { document.write(numArr[i] +"<br>"); } </script>
sort方法中负数和正数还有零对排序起到什么影响?我有点疑惑,如果a-b是负数,那么下一个a-b是numArr[1]-numArr[2]吗?
哪位大神能够帮我解释一下,拜托!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
sort方法并不是Javascript的标准中定制的,每个浏览器都可以自定义不同的排序算法。。。
sort方法执行的时候只按照返回值正负或者零执行吗,有没有sort方法的说明?
回复
对,如果你要自定义一个sort方法的话,一定要定义compare函数,并且传递给sort,这个compare返回必须是 0和正负数
回复
明了!多谢指导。
还有一点不明白,sort方法使用的是什么排序?
这里的compare只是一个比较方式而已。。
你看啊,你的数组既然要排序,那就要比较大小吧?按照什么排序呢?故而可以自定义compare方法。有个条件:如果定义a 大于 b 则返回正;a 小于 b 返回负; 否则返回0.
仅此而已。
嗯,多谢!
ECMAscript规范中并未规定具体的sort算法,所以导致各个浏览器都有自己的sort算法。。。有时候需要考虑算法的稳定性问题