"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment filtrer un tableau d'objets JavaScript en fonction de plusieurs conditions ?

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

Publié le 2024-11-08
Parcourir:731

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 :

function filterUsers(users, filter) {
  var result = [];
  for (var prop in filter) {
    if (filter.hasOwnProperty(prop)) {
      // Iterate over the array
      for (var i = 0; i 

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 :

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;
}

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 :

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'
}];

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

var filteredUsers = filterUsers(users, filter);

console.log(filteredUsers); // Output: [{ name: 'Mark', email: '[email protected]', age: 28, address: 'England' }]

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

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3