JS中sort方法有点疑惑

发布于 2021-11-22 07:54:06 字数 467 浏览 975 评论 8



<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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

清晨说ぺ晚安 2021-11-24 23:31:34

sort方法并不是Javascript的标准中定制的,每个浏览器都可以自定义不同的排序算法。。。

情痴 2021-11-24 23:30:15

sort方法执行的时候只按照返回值正负或者零执行吗,有没有sort方法的说明?

谁的新欢旧爱 2021-11-24 23:29:01

回复
对,如果你要自定义一个sort方法的话,一定要定义compare函数,并且传递给sort,这个compare返回必须是 0和正负数

离不开的别离 2021-11-24 22:56:40

回复
明了!多谢指导。

无边思念无边月 2021-11-24 21:49:57

还有一点不明白,sort方法使用的是什么排序?

后知后觉 2021-11-24 19:37:30

这里的compare只是一个比较方式而已。。

你看啊,你的数组既然要排序,那就要比较大小吧?按照什么排序呢?故而可以自定义compare方法。有个条件:如果定义a 大于 b 则返回正;a 小于 b 返回负; 否则返回0. 

仅此而已。

陌上芳菲 2021-11-24 14:36:00

嗯,多谢!

谁的新欢旧爱 2021-11-24 04:30:09

ECMAscript规范中并未规定具体的sort算法,所以导致各个浏览器都有自己的sort算法。。。有时候需要考虑算法的稳定性问题

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文