Maison  >  Article  >  interface Web  >  Comment filtrer un tableau d'objets en fonction d'un autre tableau d'objets ?

Comment filtrer un tableau d'objets en fonction d'un autre tableau d'objets ?

DDD
DDDoriginal
2024-11-02 03:34:30482parcourir

How to Filter an Array of Objects Based on Another Array of Objects?

Filtrer un tableau d'objets en fonction d'un autre tableau d'objets

Problème :

Étant donné deux tableaux d'objets, le but est de filtrer le premier tableau en fonction d'un critère spécifique en utilisant le deuxième tableau comme référence. Plus précisément, nous souhaitons filtrer le premier tableau pour inclure uniquement les objets qui correspondent à des propriétés spécifiques (ID utilisateur et ID de projet) avec les objets du deuxième tableau.

Solution :

en utilisant le filtre et certaines méthodes du tableau, nous pouvons obtenir la solution suivante :

  1. Itération du premier tableau :
    Utilisez la méthode de filtrage sur le premier tableau pour parcourir chaque élément.
  2. Match Check :
    Dans la fonction de rappel de filtre, utilisez la méthode some sur le deuxième tableau pour vérifier s'il existe un objet qui correspond à l'élément actuel du premier. tableau basé sur les propriétés userid et projectid.
  3. Filtrage :
    S'il y a une correspondance, la fonction some retournera true, ce qui conservera cet élément dans le tableau de résultats filtré.

Exemple :

<code class="js">const myArray = [{ userid: "100", projectid: "10", rowid: "0" },
                { userid: "101", projectid: "11", rowid: "1" },
                { userid: "102", projectid: "12", rowid: "2" },
                { userid: "103", projectid: "13", rowid: "3" },
                { userid: "101", projectid: "10", rowid: "4" }];

const myFilter = [{ userid: "101", projectid: "11" },
                { userid: "102", projectid: "12" },
                { userid: "103", projectid: "11" }];

const myArrayFiltered = myArray.filter((el) => {
  return myFilter.some((f) => {
    return f.userid === el.userid && f.projectid === el.projectid;
  });
});

console.log(myArrayFiltered);</code>

Résultat attendu :

<code class="js">[
  { userid: "101", projectid: "11", rowid: "1" },
  { userid: "102", projectid: "12", rowid: "2" }
]</code>

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