Maison  >  Article  >  interface Web  >  Comment filtrer un tableau d'objets JavaScript en fonction de plusieurs conditions ?

Comment filtrer un tableau d'objets JavaScript en fonction de plusieurs conditions ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-30 04:27:28996parcourir

How to Filter a JavaScript Array of Objects Based on Multiple Conditions?

Filtrage de tableaux en JavaScript basé sur plusieurs conditions

Énoncé du problème

Étant donné un tableau d'objets et un objet filtre, l'objectif est de filtrer et simplifier le tableau en fonction de plusieurs conditions spécifiées dans le filtre. Cependant, un problème spécifique survient lorsque le filtre contient plusieurs propriétés.

Solution proposée

Considérez le segment de code suivant :

<code class="js">function filterUsers(users, filter) {
  var result = [];
  for (var prop in filter) {
    if (filter.hasOwnProperty(prop)) {
      // Iterate over the array
      for (var i = 0; i < filter.length; i++) {
        if (users[i][prop] === filter[prop]) {
          result.push(users[i]);
        }
      }
    }
  }
  return result;
}

Dans la solution proposée, le problème se produit lorsque le filtre contient plusieurs propriétés. Plus précisément, lors de la deuxième itération, la comparaison entre users[i][prop] et filter[prop] est incorrecte. Pour résoudre ce problème, nous pouvons modifier le code comme suit :

<code class="js">function filterUsers(users, filter) {
  var result = [];
  for (var prop in filter) {
    if (filter.hasOwnProperty(prop)) {
      // Apply filter on the array
      users = users.filter((user) => user[prop] === filter[prop]);
    }
  }
  return result;
}</code>

Dans cette version, nous utilisons la méthode de filtrage intégrée des tableaux pour appliquer les conditions de filtre de manière dynamique. Cela garantit que seuls les objets qui satisfont à toutes les conditions spécifiées sont inclus dans le résultat.

Exemple d'utilisation

Avec la solution mise à jour, le processus de filtrage fonctionnera comme prévu :

<code class="js">var users = [{
  name: 'John',
  email: 'john@example.com',
  age: 25,
  address: 'USA'
}, {
  name: 'Tom',
  email: 'tom@example.com',
  age: 35,
  address: 'England'
}, {
  name: 'Mark',
  email: 'mark@example.com',
  age: 28,
  address: 'England'
}];

var filter = {
  address: 'England',
  name: 'Mark'
};

var filteredUsers = filterUsers(users, filter);

console.log(filteredUsers); // Output: [{ name: 'Mark', email: 'mark@example.com', age: 28, address: 'England' }]</code>

Cette solution résout le problème où plusieurs conditions de filtrage n'étaient pas appliquées correctement, garantissant que le tableau filtré résultant reflète avec précision les critères spécifiés.

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