"If a worker wants to do his job well, he must first sharpen his tools." - Confucius, "The Analects of Confucius. Lu Linggong"
Front page > Programming > Is Array.sort() Stable in Different Browsers?

Is Array.sort() Stable in Different Browsers?

Published on 2024-11-12
Browse:225

Is Array.sort() Stable in Different Browsers?

Array.sort() Method Stability in Different Browsers

The ECMA Script specification remains agnostic on the algorithm and stability of the Array.sort() method. However, recent updates and discoveries have shed light on the behavior of this method in various browsers.

ES2019 and Beyond

As of ES2019, the sort method is now required to maintain element order in the event of duplicate values. This means that Array.sort() is guaranteed to be stable in browsers supporting ES2019 and later versions.

Legacy Browser Support

Prior to ES2019, the stability of Array.sort() was browser-dependent:

  • Internet Explorer (IE6 ): Stable
  • Firefox ( Unstable
  • Firefox (>= 3): Stable
  • Chrome ( Unstable
  • Chrome (>= 70): Stable
  • Opera ( Unstable
  • Opera (>= 10): Stable
  • Safari (4 ): Stable
  • Edge (for longer arrays): Unstable

V8 Anomaly

In certain versions of V8 (the JavaScript engine used by Chrome and Node.js), the sorting algorithm may switch from stable to unstable depending on the size of the array. To demonstrate this behavior, consider the following test case:

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 

This code simulates an array of pairs with random x-coordinates and increasing y-coordinates. A stable sort would maintain the order of elements with the same x-coordinate (in this case, the y-coordinate should be sequential). However, some browsers (especially earlier versions of Chrome) may display instability in sorting larger arrays.

Latest tutorial More>

Disclaimer: All resources provided are partly from the Internet. If there is any infringement of your copyright or other rights and interests, please explain the detailed reasons and provide proof of copyright or rights and interests and then send it to the email: [email protected] We will handle it for you as soon as possible.

Copyright© 2022 湘ICP备2022001581号-3