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
Susan Sarandonoriginal
2024-12-18 06:32:14895parcourir

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"}
    ];

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;
});

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!

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