ECMA Script 规范对于数组的算法和稳定性仍然不可知。 sort() 方法。然而,最近的更新和发现揭示了此方法在各种浏览器中的行为。
从 ES2019 开始,排序方法现在是需要在出现重复值时保持元素顺序。这意味着 Array.sort() 在支持 ES2019 及更高版本的浏览器中保证稳定。
在 ES2019 之前,稳定性Array.sort() 取决于浏览器:
在某些版本的 V8(Chrome 和 Node.js 使用的 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 此代码模拟具有随机 x 坐标和递增 y 坐标的对数组。稳定的排序将保持具有相同 x 坐标的元素的顺序(在这种情况下,y 坐标应该是连续的)。但是,某些浏览器(尤其是早期版本的 Chrome)在对较大数组进行排序时可能会表现出不稳定。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3