Simplification d'un tableau d'objets basé sur plusieurs conditions de filtre en JavaScript
Question :
Comment puis-je simplifier un tableau d'objets en fonction de plusieurs conditions de filtre en JavaScript ? Par exemple, avec le tableau suivant :
var users = [ { name: 'John', email: '[email protected]', age: 25, address: 'USA' }, { name: 'Tom', email: '[email protected]', age: 35, address: 'England' }, { name: 'Mark', email: '[email protected]', age: 28, address: 'England' } ];
Et filtrer l'objet :
var filter = { address: 'England', name: 'Mark' };
Je souhaite filtrer tous les utilisateurs par adresse et par nom. Actuellement, ma fonction ajoute tous les utilisateurs avec l'adresse correspondante dans la première itération et uniquement le dernier utilisateur avec le nom correspondant dans la deuxième itération. Cependant, je dois filtrer selon les deux conditions simultanément.
Réponse :
Pour filtrer un tableau d'objets en fonction de plusieurs conditions, vous pouvez utiliser l'approche suivante :
users = users.filter(function(item) { for (var key in filter) { if (item[key] === undefined || item[key] != filter[key]) return false; } return true; });
Ce code parcourt à la fois le tableau d'objets et l'objet filtre, garantissant que chaque objet du tableau correspond à toutes les conditions spécifiées dans le filtre. La comparaison item[key] et filter[key] vérifie si la valeur de la clé de propriété dans l'élément d'objet correspond à la valeur correspondante dans l'objet filtre. Si l'une des conditions échoue, la fonction de filtre renvoie false, excluant cet objet du résultat filtré. Sinon, il renvoie vrai, indiquant que l'objet remplit toutes les conditions de filtrage.
En appliquant cette approche, vous pouvez filtrer efficacement un tableau d'objets en fonction de plusieurs critères, en garantissant que seuls les objets qui satisfont à toutes les conditions sont inclus dans le résultat.
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!