Maison  >  Article  >  interface Web  >  Explication détaillée du tri des tableaux Javascript_Connaissances de base

Explication détaillée du tri des tableaux Javascript_Connaissances de base

WBOY
WBOYoriginal
2016-05-16 16:33:111183parcourir

Si vous travaillez avec JavaScript depuis un certain temps, vous devez connaître la fonction de tri de tableau sort. Sort est une méthode dans le prototype de tableau, à savoir array.prototype.sort(), sort(compareFunction), où compareFunction est un. fonction de comparaison. Jetons un coup d'œil à une description de Mozilla MDN :
Si compareFunction n'est pas fourni, les éléments sont triés en les convertissant en chaînes et en comparant les chaînes dans l'ordre lexicographique (« dictionnaire » ou « annuaire téléphonique », pas numérique). Par exemple, « 80 » précède « 9 » en lexicographique. ordre, mais dans un tri numérique, 9 vient avant 80.

Regardez quelques exemples simples ci-dessous :

Copier le code Le code est le suivant :

// Sortie [1, 2, 3]
console.log([3, 2, 1].sort());

// Sortie ["a", "b", "c"]
console.log(["c", "b", "a"].sort());

// Sortie [1, 2, "a", "b"]
console.log(["b", 2, "a", 1].sort());


Comme vous pouvez le voir dans l'exemple ci-dessus, la valeur par défaut est de trier par ordre alphabétique dans le dictionnaire.

Heureusement, le tri accepte une fonction de comparaison personnalisée, comme dans l'exemple suivant :

Copier le code Le code est le suivant :

fonction compareFunction(a, b) {
si ( a > b) {
Retour -1 ;
}sinon si(a Retour 1 ;
}autre {
renvoie 0 ;
>
>
//Sorties ["zuojj", "Benjamin", "1"]
console.log(["Benjamin", "1", "zuojj"].sort(compareFunction));

Après le tri, nous nous posons une autre question, comment contrôler l'ordre croissant et décroissant ?

Copier le code Le code est le suivant :

function compareFunction(drapeau) {
drapeau = drapeau ? drapeau : "asc";
fonction de retour (a, b) {
si ( a > b) {
Indicateur de retour === "desc" ? -1 : 1;
}sinon si(a Indicateur de retour === "desc" ? 1 : -1;
}autre {
Renvoie 0 ;
>
};
>
//Sorties ["1", "Benjamin", "zuojj"]
console.log(["Benjamin", "1", "zuojj"].sort(compareFunction()));
//Sorties ["zuojj", "Benjamin", "1"]
console.log(["Benjamin", "1", "zuojj"].sort(compareFunction("desc")));

Les règles de tri de comparFunction sont les suivantes :
1.S'il renvoie un nombre négatif, a sera trié selon un index inférieur dans le tableau.
2. S'il renvoie un nombre positif, a sera trié selon un index plus élevé.
3.Et s'il renvoie 0, aucun tri n'est nécessaire.

Jetons un coup d'œil à un extrait de Mozilla MDN :
Le comportement de la méthode de tri a changé entre JavaScript 1.1 et JavaScript 1.2.Pour expliquer cette description, regardons un exemple :

Dans JavaScript 1.1, sur certaines plateformes, la méthode de tri ne fonctionne pas sur toutes les plateformes pour JavaScript 1.2.

Dans JavaScript 1.2, cette méthode ne convertit plus les éléments non définis en null ; elle les trie plutôt vers l'extrémité supérieure du tableau. Veuillez cliquer ici pour plus de détails.

Copier le code Le code est le suivant :

var arr = [];
arr[0] = "Fourmi";
arr[5] = "Zèbre";
//Sorties ["Fourmi", 5 : "Zèbre"]
console.log(arr);
//Sorties 6
console.log(arr.length);
//Sorties "Fourmi*****Zèbre"
console.log(arr.join("*"));
//Trier
var sortArr = arr.sort();
//Sorties ["Fourmi", "Zèbre"]
console.log(sortArr);
//Sorties 6
console.log(sortArr.length);
//Sorties "Fourmi*Zèbre****"
console.log(sortArr.join("*"));

J'espère que cet article vous sera utile pour apprendre et comprendre la méthode sort(). J'espère que vous critiquerez et corrigerez toute inadéquation dans l'article.

Lien de référence : https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/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