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!