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

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

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-02 00:03:28341parcourir

Is Array.sort() Stable in Different Browsers?

Array.sort() Stabilité de la méthode dans différents navigateurs

La spécification ECMA Script reste agnostique sur l'algorithme et la stabilité du tableau Méthode .sort(). Cependant, des mises à jour et découvertes récentes ont mis en lumière le comportement de cette méthode dans divers navigateurs.

ES2019 et Beyond

Depuis ES2019, la méthode de tri est désormais requis pour maintenir l'ordre des éléments en cas de valeurs en double. Cela signifie qu'Array.sort() est garanti stable dans les navigateurs prenant en charge ES2019 et les versions ultérieures.

Legacy Browser Support

Avant ES2019, la stabilité de Array.sort() dépendait du navigateur :

  • Internet Explorer (IE6) : 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 (pour les tableaux plus longs) : Instable

Anomalie V8

Dans certaines versions de V8 (le moteur JavaScript utilisé par Chrome et Node.js), l'algorithme de tri peut passer de stable à instable selon la taille du tableau. Pour démontrer ce comportement, considérons le cas de test suivant :

<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>

Ce code simule un tableau de paires avec des coordonnées x aléatoires et des coordonnées y croissantes. Un tri stable conserverait l'ordre des éléments avec la même coordonnée x (dans ce cas, la coordonnée y doit être séquentielle). Cependant, certains navigateurs (en particulier les versions antérieures de Chrome) peuvent afficher une instabilité lors du tri de tableaux plus grands.

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!

Déclaration:
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