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