Maison > Article > interface Web > Array.sort() est-il stable 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.
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.
Avant ES2019, la stabilité de Array.sort() dépendait du navigateur :
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!