Maison > interface Web > js tutoriel > Comment puis-je rechercher efficacement des objets dans des tableaux JavaScript en fonction des valeurs d'attribut ?

Comment puis-je rechercher efficacement des objets dans des tableaux JavaScript en fonction des valeurs d'attribut ?

Mary-Kate Olsen
Libérer: 2024-12-18 21:00:15
original
489 Les gens l'ont consulté

How Can I Efficiently Find Objects in JavaScript Arrays Based on Attribute Values?

Recherche d'objets dans des tableaux en fonction des valeurs d'attribut en JavaScript

Lorsque l'on traite des tableaux d'objets, il est souvent nécessaire de rechercher des éléments spécifiques en fonction des valeurs d'attribut. Ceci est particulièrement utile lorsque vous travaillez avec de grands tableaux pour éviter les boucles inefficaces.

Le problème

Considérez le tableau suivant d'objets fournisseur :

vendors = [{
    Name: 'Magenic',
    ID: 'ABC'
  },
  {
    Name: 'Microsoft',
    ID: 'DEF'
  } // and so on...
];
Copier après la connexion

L'objectif est de déterminer si un objet avec l'attribut Name égal à "Magenic" existe au sein de ce tableau sans recourir à des boucles explicites.

Le Solution

JavaScript moderne fournit plusieurs méthodes de tableau qui rendent cette tâche sans effort :

En utilisant certains :

if (vendors.some(e => e.Name === 'Magenic')) {
  // We found at least one object that we're looking for!
}
Copier après la connexion

certains parcourent le tableau et renvoient vrai dès qu'il trouve un élément qui correspond à la condition spécifiée.

Utilisation find :

if (vendors.find(e => e.Name === 'Magenic')) {
  // Usually the same result as above, but find returns the found object instead of a boolean
}
Copier après la connexion

find se comporte de la même manière que certains, mais au lieu de renvoyer un booléen, il renvoie le premier élément qui correspond à la condition.

Obtenir la position de l'objet :

Pour obtenir la position de l'élément correspondant, utilisez findIndex :

const i = vendors.findIndex(e => e.Name === 'Magenic');
if (i > -1) {
  // We know that at least 1 object that matches has been found at the index i
}
Copier après la connexion

Recherche de tous les objets correspondants :

if (vendors.filter(e => e.Name === 'Magenic').length > 0) {
  // The same result as above, but filter returns all objects that match
}
Copier après la connexion

filter renvoie un tableau de tous les éléments qui satisfont à la condition spécifiée.

Compatibilité avec les anciens navigateurs :

Pour les navigateurs qui ne prennent pas en charge fonctions fléchées, une approche alternative utilisant la méthode de filtre standard est :

if (vendors.filter(function(e) { return e.Name === 'Magenic'; }).length > 0) {
  // The same result as above, but filter returns all objects that match and we avoid an arrow function for compatibility
}
Copier après la connexion

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