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

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

DDD
DDDoriginal
2024-10-26 03:09:27706parcourir

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

Filtrage d'un tableau d'objets basé sur plusieurs conditions en JavaScript

Problème :

Étant donné un tableau d'objets et un filtre objet, nous visons à filtrer les éléments du tableau en fonction de plusieurs conditions spécifiées dans l'objet filtre. Cependant, une implémentation actuelle rencontre un problème où plusieurs éléments répondant uniquement à un sous-ensemble de conditions sont inclus dans le résultat.

Solution :

Le problème provient d'une utilisation incorrecte de la boucle for (var i = 0; i < filter.length; i ) dans la fonction de filtrage. Puisque le filtre est un objet, il n'a pas de propriété de longueur et cette boucle devient redondante.

Pour résoudre ce problème, nous pouvons parcourir directement les propriétés de l'objet filtre et vérifier l'existence de la propriété sur chaque objet utilisateur. . Le code suivant démontre l'implémentation correcte :

<code class="javascript">function filterUsers(users, filter) {
  var result = [];
  for (var prop in filter) {
    if (filter.hasOwnProperty(prop)) {
      users.forEach(function(user) {
        if (user[prop] === filter[prop]) {
          result.push(user);
        }
      });
    }
  }
  return result;
}</code>

Fonction de filtre améliorée :

La fonction améliorée filterUsers parcourt désormais les utilisateurs et vérifie chaque propriété de l'objet filtre. pour voir si cela correspond à la valeur de propriété correspondante de l'utilisateur. Seuls les utilisateurs dont les valeurs correspondent à toutes les propriétés spécifiées sont inclus dans le résultat.

Exemple :

<code class="javascript">var filter = {
  address: 'England',
  name: 'Mark',
};
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 filteredUsers = filterUsers(users, filter);

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

Cette implémentation garantit que seul l'utilisateur dont le nom est Mark et qui vit en Angleterre est inclus dans le résultat, comme spécifié par les conditions de filtre.

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