首页  >  文章  >  web前端  >  Array.sort() 在不同浏览器中稳定吗?

Array.sort() 在不同浏览器中稳定吗?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-02 00:03:28232浏览

Is Array.sort() Stable in Different Browsers?

Array.sort() 方法在不同浏览器中的稳定性

ECMA 脚本规范对数组的算法和稳定性仍然不可知.sort() 方法。然而,最近的更新和发现揭示了此方法在各种浏览器中的行为。

ES2019 及以后

从 ES2019 开始,排序方法是现在需要在出现重复值时保持元素顺序。这意味着 Array.sort() 在支持 ES2019 及更高版本的浏览器中保证稳定。

旧版浏览器支持

ES2019 之前,稳定性Array.sort() 取决于浏览器:

  • Internet Explorer (IE6):稳定
  • Firefox ( 不稳定
  • Firefox (>= 3): 稳定
  • Chrome ( 不稳定
  • Chrome (>= 70):稳定
  • Opera (不稳定
  • Opera (>= 10) ): 稳定
  • Safari (4 ): 稳定
  • 边缘(对于较长的数组): 不稳定

V8 异常

在某些版本的 V8(Chrome 和 Node.js 使用的 JavaScript 引擎)中,排序算法可能会根据大小从稳定切换到不稳定数组的。为了演示此行为,请考虑以下测试用例:

<code class="javascript">function Pair(_x, _y) {
  this.x = _x;
  this.y = _y;
}
function pairSort(a, b) {
  return a.x - b.x;
}
var y = 0;
var check = [];
while (check.length < 100) {
  check.push(new Pair(Math.floor(Math.random() * 3) + 1, ++y));
}
check.sort(pairSort);</code>

此代码模拟具有随机 x 坐标和递增 y 坐标的对数组。稳定的排序将保持具有相同 x 坐标的元素的顺序(在这种情况下,y 坐标应该是连续的)。但是,某些浏览器(尤其是早期版本的 Chrome)在对较大数组进行排序时可能会表现出不稳定。

以上是Array.sort() 在不同浏览器中稳定吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn