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
Libérer: 2024-12-17 05:53:24
original
360 Les gens l'ont consulté

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"}
    ];
Copier après la connexion

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;
});
Copier après la connexion

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!

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal