"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Array.sort() est-il stable dans différents navigateurs ?

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

Publié le 2024-11-12
Parcourir:993

Is Array.sort() Stable in Different Browsers?

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

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

ES2019 et au-delà

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 d'être stable dans les navigateurs prenant en charge ES2019 et les versions ultérieures.

Prise en charge des navigateurs hérités

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

  • Internet Explorer (IE6 ): Stable
  • Firefox ( Instable
  • Firefox (>= 3) : Stable
  • Chrome ( Instable
  • Chrome (>= 70): Stable
  • Opéra ( Instable
  • Opéra (>= 10): Stable
  • Safari (4 ): Stable
  • Edge (pour les baies plus longues) : Instable

V8 Anomalie

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 scénario de test suivant :

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 

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.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3