Maison >interface Web >js tutoriel >Comment puis-je trier un tableau d'objets par plusieurs champs en JavaScript ?

Comment puis-je trier un tableau d'objets par plusieurs champs en JavaScript ?

DDD
DDDoriginal
2024-12-17 05:53:24363parcourir

How Can I Sort an Array of Objects by Multiple Fields in JavaScript?

Tri de tableaux d'objets par plusieurs champs

Dans la question d'origine, le tri d'un tableau d'objets par un seul champ a été résolu efficacement. Cependant, comment pouvons-nous appliquer un tri sur plusieurs champs ?

Pour trier un tableau d'objets par plusieurs champs, nous pouvons utiliser une approche de tri en chaîne. Cela implique de trier selon le premier champ puis, si les valeurs sont égales, de continuer à trier selon le deuxième champ. Si nécessaire, ce processus peut être répété pour plus de champs.

Considérons l'exemple suivant où nous souhaitons trier un tableau de maisons par ville (ascendant) puis par prix (décroissant) :

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, nous pouvons utiliser le code JavaScript suivant :

homes.sort(function (a, b) {
    return a.city.localeCompare(b.city) || b.price - a.price;
});

Voici comment ce code fonctionne :

  1. La fonction de tri prend une fonction de comparaison comme argument. Cette fonction compare deux éléments du tableau.
  2. Dans notre fonction de comparaison, nous comparons d'abord les villes des deux maisons. S'ils sont égaux, nous comparons leurs prix.
  3. La fonction localeCompare compare deux chaînes et prend en compte les paramètres régionaux du navigateur. Cela garantit que le tri est cohérent dans les différents paramètres régionaux.
  4. Le || L’opérateur est utilisé pour effectuer une opération logique OU. Si la comparaison des villes renvoie une valeur non nulle, cela signifie que les deux maisons ont des villes différentes et que la comparaison des villes doit être utilisée pour le tri. Sinon, la comparaison des prix est utilisée.
  5. Si la comparaison des prix renvoie une valeur négative, cela signifie que la première maison a un prix inférieur à celui de la résidence secondaire. S'il renvoie une valeur positive, la première maison a un prix plus élevé que la deuxième maison. L'algorithme de tri utilisera cette valeur pour déterminer l'ordre des maisons.

En appliquant cette approche de tri à plusieurs champs, nous pouvons facilement trier des tableaux complexes d'objets dans l'ordre souhaité.

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