Maison  >  Article  >  interface Web  >  Explication détaillée de l'utilisation de la méthode sort() dans les compétences javascript_javascript

Explication détaillée de l'utilisation de la méthode sort() dans les compétences javascript_javascript

WBOY
WBOYoriginal
2016-05-16 15:41:321434parcourir

Syntaxe : arrayObject.sort(sortby) ; le paramètre sortby est facultatif. Spécifie l'ordre de tri. Doit être une fonction.

La méthode sort() est utilisée pour trier les éléments du tableau.

Si cette méthode est appelée sans paramètres, les éléments du tableau seront triés par ordre alphabétique, ou plus précisément, par ordre d'encodage des caractères. Pour y parvenir,

Convertissez d'abord les éléments du tableau en chaînes (si nécessaire) pour comparaison.

Si vous souhaitez trier selon d'autres critères, vous devez fournir une fonction de comparaison, qui compare deux valeurs et renvoie un nombre qui décrit l'ordre relatif des deux valeurs.

La fonction de comparaison doit avoir deux paramètres a et b, et sa valeur de retour est la suivante :

Si a est inférieur à b, a doit apparaître avant b dans le tableau trié, puis renvoyer une valeur inférieure à 0.

Si a est égal à b, renvoie 0.

Si a est supérieur à b, renvoie une valeur supérieure à 0.

Utilisez la méthode sort() en js pour trier les nombres

<script>
  var arr = [23,12,1,34,116,8,18,37,56,50];
  alert(arr.sort();
</script>

Retour : [1, 116, 12, 18, 23, 34, 37, 50, 56, 8]

Le code ci-dessus ne trie pas les nombres selon leur taille. Pour y parvenir, une fonction de tri doit être utilisée :

<script>
  var arr = [23,12,1,34,116,8,18,37,56,50];
  function sequence(a,b){
    if (a>b) {
      return 1;
    }else if(a<b){
      return -1
    }else{
      return 0;
    }
  }
  console.log(arr.sort(sequence));
</script>

Retour : [1, 8, 12, 18, 23, 34, 37, 50, 56, 116] (pas de problème)

Bien sûr, vous pouvez également écrire la fonction de tri dans la méthode sort() :

<script>
  var arr = [23,12,1,34,116,8,18,37,56,50];
  var arr2 = arr.sort(function(a,b){
     if (a>b) {
      return 1;
    }else if(a<b){
      return -1
    }else{
      return 0;
    }  
  })
  console.log(arr2);
</script>

Retour : [1, 8, 12, 18, 23, 34, 37, 50, 56, 116] (pas de problème non plus)

peut également être simplifié à cette façon d'écrire
Parce que : si a est inférieur à b, a doit apparaître avant b dans le tableau trié, alors une valeur inférieure à 0 est renvoyée.

Si a est égal à b, renvoie 0.

Si a est supérieur à b, renvoie une valeur supérieure à 0

 <script>
   var arr = [23,12,1,34,116,8,18,37,56,50];
   function sequence(a,b){
     return a - b;
   }
   console.log(arr.sort(sequence));
 </script>

Retours : [1, 8, 12, 18, 23, 34, 37, 50, 56, 116] (également correct)

Le tri par ordre alphabétique est beaucoup plus simple, il suffit d'utiliser directement la méthode sort() :

 <script>
   var arr = ['fanda','banner','find','zoom','index','width','javascript'];
   console.log(arr.sort());
 </script>

Retour : ["banner", "fanda", "find", "index", "javascript", "width", "zoom"]

Maintenant, quand j'apprends le javascript, j'ai trouvé que la fonction sort() est un peu étrange (c'est peut-être un problème avec mon niveau -_- !), donc je vais enregistrer ce que j'ai trouvé ici. Les paramètres de la méthode sort() sont très étranges. Ce doivent être des fonctions, mais ce sont également des paramètres facultatifs. S'il n'y a pas de paramètres, ils seront classés par défaut dans l'ordre des chaînes du dictionnaire (même les valeurs numériques seront converties). en chaînes pour le traitement). Ce paramètre permet de comparer la taille de deux valeurs, comme par exemple :

Copier le code Le code est le suivant :

fonction sortNumber(a, b){
return a - b; //Ce qui est renvoyé ici est leur différence. S'il est inférieur à 0, a sera classé devant. S'il est supérieur à 0, b sera classé devant. être n'importe quoi. (Méthode de tri des bulles !!)
>

L'application est la suivante (cet exemple est tellement classique !!) :

<script type="text/javascript">
function sortNumber(a,b){return a - b}
var arr = new Array(3)
arr[0] = "10";
arr[1] = "5";
arr[2] = "4";
document.write(arr + "<br />");
document.write(arr.sort(sortNumber));
</script>

Ensuite, l'arrangement original de 10,5,4 deviendra 4,5,10. Voici une explication de ce processus. Évidemment, sortNumber devrait avoir deux paramètres, mais lorsque nous l'appelons, il n'y a aucun paramètre. Pourquoi. ? Comparer? C'est comme ça lorsque les appels arr sont triés à partir du premier numéro, il n'y a pas de numéro avant 10 à comparer, donc il passe au deuxième numéro, qui est 5. À ce moment, 10 sera comparé à 5, donc. il s'appellera sortNumber et passera 10 et 5, c'est la nature de sort().

Déclaration:
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