Heim  >  Artikel  >  Web-Frontend  >  Wie filtere ich ein Array von Objekten basierend auf Übereinstimmungen mit einem anderen Array?

Wie filtere ich ein Array von Objekten basierend auf Übereinstimmungen mit einem anderen Array?

Barbara Streisand
Barbara StreisandOriginal
2024-11-01 08:39:02397Durchsuche

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

Ein Array von Objekten mit einem anderen Array von Objekten filtern

Problem:

Sie möchten um ein Array von Objekten basierend auf Übereinstimmungen mit einem zweiten Array von Objekten zu filtern. Zum Beispiel bei den folgenden Arrays:

<code class="js">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" },
];
myFilter = [
  { userid: "101", projectid: "11" },
  { userid: "102", projectid: "12" },
  { userid: "103", projectid: "11" },
];</code>

Sie müssen myArray filtern, um nur Objekte einzuschließen, deren Benutzer-ID- und Projekt-ID-Eigenschaften mit denen in myFilter übereinstimmen. Das erwartete Ergebnis ist:

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

Lösung:

Um das Array zu filtern, können Sie den Filter und einige Array-Methoden verwenden:

<code class="js">const myArrayFiltered = myArray.filter((el) => {
  return myFilter.some((f) => {
    return f.userid === el.userid && f.projectid === el.projectid;
  });
});</code>

Erklärung:

  • Die Filtermethode iteriert über myArray und erstellt ein neues Array, das nur die Objekte enthält, die die als Argument bereitgestellte Bedingung erfüllen.
  • Die Die Methode some, die innerhalb der Bedingung verwendet wird, prüft, ob ein Element in myFilter mit den Eigenschaften userid und projectid des aktuellen Elements in myArray übereinstimmt.
  • Wenn eine Übereinstimmung gefunden wird, gibt die Methode some true zurück, was angibt, dass das aktuelle Element sollte im gefilterten Array enthalten sein.

Das obige ist der detaillierte Inhalt vonWie filtere ich ein Array von Objekten basierend auf Übereinstimmungen mit einem anderen Array?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn