Cet article décrit comment JS utilise array.prototype.sort () pour trier les objets Array. Partagez-le pour votre référence. L'analyse spécifique est la suivante:
Lorsque vous parlez de tri des objets Array, comprenons d'abord brièvement array.prototype.sort (). La méthode de tri accepte un paramètre - fonction. La fonction fournira deux paramètres, respectivement, deux éléments comparés. Si l'élément est une chaîne, il sera comparé via le code Unicode. Si c'est le nombre, la taille de la valeur est comparée. Si 1 est renvoyé dans la fonction comparée, deux éléments seront échangés et 0 et -1 ne seront pas échangés. Jetons un coup d'œil à un exemple:
La copie de code est la suivante: var arr = [3, 5, 2, 1];
// tri de petit à grand
arr.sort (fonction (a, b) {
retourner un> b? 1: -1;
});
// Le résultat est: [1, 2, 3, 5]
Alors retour à notre sujet, comment devrais-je l'écrire si je trierais un objet de tableau? En fait, le principe est le même que ci-dessus, comme:
Copiez le code comme suit: var arr = [
{a: 2, b: 3,2},
{a: 3, b: 1.2},
{a: 4, b: 2,2},
{a: 6, b: 1.2},
{a: 5, b: 3,2}
]]
/// trié par attribut b de petit à grand
arr.sort (fonction (x, y) {
Retour xb> yb? 1: -1;
});
X et Y sont un élément de l'ARR, c'est-à-dire un objet, vous pouvez donc comparer directement les propriétés des deux objets.
Dans l'exemple ci-dessus, il y a des duplications dans le plus petit élément. Si l'exigence est: Triez d'abord de petit à grand selon l'attribut B, et s'il y a des duplications dans le plus petit, alors triez par l'attribut A, comment dois-je l'écrire?
Lors du tri, premier tri par B attribut. Si XB est supérieur à YB, déplacez X à droite de Y. Si XB est égal à YB, comparez-le avec XA et YA. Par conséquent, le code est le suivant:
Copiez le code comme suit: arr.sort (fonction (x, y) {
if (xb> yb) {
retour 1;
} else if (xb === yb) {
Retour xa> ya? 1: -1;
} else if (xb <yb) {
retour -1;
}
})
J'espère que cet article sera utile à la programmation JavaScript de tous.