Obtenir le plus et le moins d'un tableau d'entiers : une substitution de chaîne inattendue
La tâche consistant à trouver les valeurs les plus élevées et les plus basses dans un un tableau comprenant uniquement des entiers semble d'une simplicité trompeuse. Cependant, comme on peut le découvrir, la méthode native sort() présente un obstacle inattendu. Comme il donne la priorité par défaut à l’ordre alphabétique, le tri numérique s’avère plus difficile que prévu. Comment pouvons-nous surmonter cet obstacle et demander à la fonction sort() de se concentrer sur les valeurs entières contenues dans les éléments du tableau ?
Considérons l'exemple suivant :
var numArray = [140000, 104, 99]; numArray = numArray.sort(); console.log(numArray);
Une attente intuitive nous amènerait s'attendre à une sortie de 99, 104, 140 000. Cependant, le résultat est radicalement différent : 104, 140 000, 99. Ceci un comportement particulier découle de la tendance innée de la méthode sort() à traiter les valeurs comme des chaînes plutôt que comme des entiers.
Pour remédier à ce problème, nous pouvons introduire une fonction de tri personnalisée pour gérer explicitement les valeurs numériques. Voici comment nous pouvons y parvenir :
var numArray = [140000, 104, 99]; numArray.sort(function(a, b) { return a - b; }); console.log(numArray);
La fonction sortNumber(a, b) gère efficacement le tri numérique que nous recherchons. En soustrayant a de b, les valeurs positives poussent a vers la droite, garantissant que les valeurs plus élevées apparaissent plus tard dans le tableau trié. À l’inverse, les valeurs négatives provoquent des échanges, plaçant les valeurs plus petites vers la gauche. Cette fonction de tri personnalisée nous permet de trier avec précision des tableaux d'entiers, en fournissant les valeurs les plus élevées et les plus basses comme prévu.
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!