Maison  >  Article  >  interface Web  >  Comment filtrer un tableau d'objets en fonction des propriétés correspondantes dans un autre tableau ?

Comment filtrer un tableau d'objets en fonction des propriétés correspondantes dans un autre tableau ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-02 08:50:02161parcourir

How to Filter an Array of Objects Based on Matching Properties in Another Array?

Filtrage d'un tableau d'objets à l'aide d'un autre tableau d'objets

La tâche à accomplir est de filtrer un tableau d'objets (myArray) en fonction d'un deuxième tableau d'objets (myFilter) pour renvoyer uniquement les objets de myArray dont les propriétés userid et projectid correspondent à celles de myFilter.

Solution

Pour y parvenir, nous utilisons un combinaison de filtre et de quelques méthodes. La méthode filter parcourt chaque élément de myArray et renvoie un nouveau tableau contenant uniquement les éléments qui satisfont à une condition donnée. Dans ce cas, la condition est satisfaite si l'ID utilisateur et l'ID de projet de l'élément correspondent à l'une des paires ID utilisateur et ID de projet dans myFilter.

La méthode some est utilisée dans la condition de filtre pour déterminer si l'un des éléments de myFilter répond les critères spécifiés. La condition vérifie si les propriétés userid et projectid de l'élément myFilter actuel sont égales à celles de l'élément myArray actuel. Si une correspondance est trouvée, la méthode some renvoie true, indiquant que la condition est remplie et que l'élément doit être inclus dans le tableau filtré.

Exemple de code

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

Sortie

[
  { userid: "101", projectid: "11", rowid: "1" },
  { userid: "102", projectid: "12", rowid: "2" }
]

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