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
Libérer: 2024-11-02 00:03:28
original
328 Les gens l'ont consulté

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>
Copier après la connexion

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!

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