Maison >interface Web >js tutoriel >Pourquoi une valeur de retour booléenne n'est-elle pas suffisante pour la fonction de comparaison Array.sort de JavaScript ?
La méthode Array.sort de JavaScript permet des fonctions de comparaison personnalisées pour trier les éléments, et une question courante se pose : une simple fonction de comparaison renvoyant un booléen peut-elle suffire pour le tri ? La réponse est non sans équivoque.
Une fonction de comparaison en JavaScript doit respecter les règles suivantes :
Cependant, renvoyer un booléen ne garantit pas la cohérence. Par exemple, si compare(a, b) renvoie false (ou de manière équivalente, 0), cela implique que a est soit égal à, soit plus petit que b. Cela viole la propriété de transitivité requise pour les algorithmes de tri.
Considérez cette fonction de comparaison :
function compare(a, b) { return a > b; }<p>Elle renvoie un booléen : vrai si a est supérieur à b, et faux sinon.</p> <p>En utilisant cette fonction en tri, nous have :</p> <pre class="brush:php;toolbar:false">[0, 1, 0].sort(compare); // [0, 1, 0] or [1, 0, 0] (varies between implementations) [1, 1, 0, 2].sort(compare); // [0, 1, 2, 1] or [1, 1, 0, 2] (varies between implementations)
Les résultats sont incohérents car la fonction de comparaison n'applique pas la transitivité.
Pour garantir un tri cohérent, utilisez des fonctions de comparaison qui renvoient le valeurs numériques correctes :
En suivant ces directives, vous pouvez garantir un comportement de tri fiable et prévisible dans votre code JavaScript.
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!