Maison > interface Web > js tutoriel > Array.sort() est-il stable sur différents navigateurs ?

Array.sort() est-il stable sur différents navigateurs ?

Linda Hamilton
Libérer: 2024-11-02 13:38:30
original
312 Les gens l'ont consulté

Is Array.sort() stable across different browsers?

Quelle est la stabilité de Array.sort() sur différents navigateurs ?

La stabilité de la méthode Array.sort(), qui détermine si l'ordre des éléments égaux est conservé après le tri, varie selon les différents navigateurs :

Depuis ES2019, le La méthode de tri doit être stable :

Cela signifie que les éléments égaux dans le tableau conserveront leur ordre relatif après le tri.

Avant ES2019, la stabilité était assurée par le navigateur. à charge :

  • IE 6 : Stable
  • Firefox < 3 : Instable
  • Firefox >= 3 : Stable
  • Chrome < 70 : Instable
  • Chrome >= 70 : Stable
  • Opéra < 10 : Instable
  • Opéra >= 10 : Stable
  • Safari 4 : Stable
  • Edge : Instable pour les tableaux de plus de 512 elements

Notez que certaines versions de Chrome basculaient entre les tris stables et instables en fonction de la taille du tableau :

Avant Chrome 70, le moteur utilisait un tri stable pour les petits tableaux et un instable pour les grands tableaux. Cela peut être vérifié à l'aide du cas de test suivant :

<code class="js">function Pair(_x, _y) {
  this.x = _x;
  this.y = _y;
}
function pairSort(a, b) {
  return a.x - b.x;
}
// Create an array with enough entries to trigger the "more efficient" sort method
var y = 0;
var check = [];
while (check.length < 100) {
  check.push(new Pair(Math.floor(Math.random() * 3) + 1, ++y));
}
check.sort(pairSort);
// Check for instability by comparing the order of equal elements
var min = {};
var issues = 0;
for (var i = 0; i < check.length; ++i) {
  var entry = check[i];
  var found = min[entry.x];
  if (found) {
    if (found.y > entry.y) {
      console.log("Unstable at " + found.i + ": " + found.y + " > " + entry.y);
      ++issues;
    }
  } else {
    min[entry.x] = {x: entry.x, y: entry.y, i: i};
  }
}
// Log stability status
if (!issues) {
  console.log("Sort appears to be stable");
}</code>
Copier après la connexion

Ce test démontrera l'instabilité dans les versions précédentes de Chrome et d'autres navigateurs qui implémentaient des tris instables.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal