Maison  >  Article  >  Java  >  Tri des tableaux JS : comprendre l'analyse d'utilisation de base de la méthode sort()

Tri des tableaux JS : comprendre l'analyse d'utilisation de base de la méthode sort()

王林
王林original
2023-12-28 16:39:511341parcourir

Tri des tableaux JS : comprendre lanalyse dutilisation de base de la méthode sort()

Tri de tableau JS : analyse de base de l'utilisation de la méthode sort()

En JavaScript, un tableau est une structure de données couramment utilisée et le tri est une opération courante pour réorganiser les éléments du tableau. JS fournit la méthode sort(), qui peut trier le tableau selon des règles spécifiques. Cet article présentera en détail l’utilisation de base de la méthode sort() et fournira des exemples de code spécifiques.

La méthode sort() est une méthode native des tableaux et peut être utilisée en appelant sort() de l'objet tableau. Il a deux utilisations :

  1. Aucun paramètre n'est passé : dans ce cas, la méthode sort() convertira les éléments du tableau en chaînes et les triera dans l'ordre d'encodage Unicode.
  2. Passez une fonction de comparaison en paramètre : les règles de tri peuvent être personnalisées.

Tout d'abord, jetons un coup d'œil à l'exemple de code pour la première utilisation :

let arr = [5, 2, 8, 1, 4];
arr.sort();
console.log(arr); // 输出:[1, 2, 4, 5, 8]

Dans le code ci-dessus, une fois que les éléments du tableau arr sont convertis en chaînes, ils sont encodés dans le ordre d'Unicode Trié. Le résultat est [1, 2, 4, 5, 8]. arr中的元素被转化为字符串后,按照Unicode编码的顺序进行了排序。结果是[1, 2, 4, 5, 8]。

然而,sort()方法默认按照字符串进行排序,这就导致了一些令人困惑的结果。例如:

let arr2 = [10, 100, 1, 20, 2];
arr2.sort();
console.log(arr2); // 输出:[1, 10, 100, 2, 20]

在上述代码中,数组arr2的排序结果并不是我们期望的:[1, 2, 10, 20, 100],而是[1, 10, 100, 2, 20]。这是因为在排序过程中,它将数字10,100,2和20先转化为字符串,然后按照Unicode编码的顺序排序,因此得到了不正确的结果。

为了解决这个问题,我们需要使用第二种用法:传递一个比较函数作为参数。比较函数需要有两个参数,它会将两个要比较的元素传递给该函数,并根据函数的返回值来决定它们的排序顺序。

下面是一个具体的示例代码:

let arr3 = [10, 100, 1, 20, 2];
arr3.sort(function(a, b) {
    return a - b;
});
console.log(arr3); // 输出:[1, 2, 10, 20, 100]

在上面的代码中,我们传递了一个比较函数给sort()方法。该比较函数返回a - b的结果,这将使得数组内的元素按照从小到大的顺序进行排序。结果是[1, 2, 10, 20, 100]。

除了使用a - b

Cependant, la méthode sort() trie par chaîne par défaut, ce qui conduit à des résultats déroutants. Par exemple :

let arr4 = ["apple", "banana", "cherry", "date"];
arr4.sort(function(a, b) {
    return a.length - b.length;
});
console.log(arr4); // 输出:["date", "apple", "cherry", "banana"]

Dans le code ci-dessus, le résultat du tri du tableau arr2 n'est pas celui attendu : [1, 2, 10, 20, 100], mais [1, 10, 100 , 2 , 20]. En effet, pendant le processus de tri, il convertit d'abord les nombres 10, 100, 2 et 20 en chaînes, puis les trie dans l'ordre d'encodage Unicode, ce qui donne des résultats incorrects.


Pour résoudre ce problème, nous devons utiliser le deuxième usage : passer une fonction de comparaison en paramètre. La fonction de comparaison nécessite deux paramètres, elle transmettra les deux éléments à comparer à la fonction et déterminera leur ordre de tri en fonction de la valeur de retour de la fonction.

🎜Ce qui suit est un exemple de code spécifique : 🎜rrreee🎜Dans le code ci-dessus, nous passons une fonction de comparaison à la méthode sort(). Cette fonction de comparaison renvoie le résultat de a - b, qui triera les éléments du tableau de petit à grand. Le résultat est [1, 2, 10, 20, 100]. 🎜🎜En plus d'utiliser a - b comme fonction de comparaison, nous pouvons également utiliser d'autres fonctions pour définir des règles de tri. Voici un exemple de tri par longueur de chaîne : 🎜rrreee🎜Dans le code ci-dessus, nous passons une fonction de comparaison personnalisée à la méthode sort(). Cette fonction de comparaison renvoie le résultat de a.length - b.length, qui triera les chaînes du tableau de la longueur la plus courte à la plus longue. Le résultat est ["date", "pomme", "cerise", "banane"]. 🎜🎜Résumé : 🎜La méthode array sort() de JS est un outil de tri puissant et pratique. En utilisant différents paramètres, le tableau peut être trié selon différentes règles. Lorsque vous utilisez la méthode sort(), si vous souhaitez simplement trier selon l'ordre d'encodage Unicode par défaut, vous pouvez appeler la méthode sort() directement sans passer de paramètres. Si vous devez personnaliser les règles de tri, vous pouvez le faire en passant une fonction de comparaison en paramètre. 🎜

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!

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