Maison > interface Web > js tutoriel > Comment trier un tableau d'objets par plusieurs champs ?

Comment trier un tableau d'objets par plusieurs champs ?

Susan Sarandon
Libérer: 2024-12-18 06:32:14
original
851 Les gens l'ont consulté

How to Sort an Array of Objects by Multiple Fields?

Comment trier un tableau d'objets par plusieurs champs

Le tri d'un tableau d'objets par plusieurs champs peut être réalisé en enchaînant plusieurs fonctions de comparaison .

Exemple

Considérez le tableau suivant de objets représentant des maisons :

var homes = [
    {"h_id":"3",
     "city":"Dallas",
     "state":"TX",
     "zip":"75201",
     "price":"162500"},
    {"h_id":"4",
     "city":"Bevery Hills",
     "state":"CA",
     "zip":"90210",
     "price":"319250"},
    {"h_id":"6",
     "city":"Dallas",
     "state":"TX",
     "zip":"75000",
     "price":"556699"},
    {"h_id":"5",
     "city":"New York",
     "state":"NY",
     "zip":"00010",
     "price":"962500"}
    ];
Copier après la connexion

Pour trier ce tableau par ville (ascendant) puis par prix (décroissant), utilisez l'approche suivante :

homes.sort(function (a, b) {
    // Compare city fields
    var cityDelta = a.city.localeCompare(b.city);
    if (cityDelta !== 0) {
        // If cities differ, return comparison result
        return cityDelta;
    }
    // If cities are the same, compare prices in descending order
    return b.price - a.price;
});
Copier après la connexion

Approche générale

Cette approche peut être généralisée à un nombre illimité de champs de tri. Parcourez les champs de tri souhaités dans l’ordre souhaité et comparez les valeurs de chaque champ. Si un delta non nul est trouvé, renvoie le résultat ; sinon, passez au champ suivant.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal