Heim  >  Artikel  >  Web-Frontend  >  Wie kann ich ein Array von Objekten basierend auf übereinstimmenden Eigenschaften in einem anderen Array filtern?

Wie kann ich ein Array von Objekten basierend auf übereinstimmenden Eigenschaften in einem anderen Array filtern?

Susan Sarandon
Susan SarandonOriginal
2024-10-30 00:34:28310Durchsuche

How can I filter an array of objects based on matching properties in another array?

Array von Objekten mit einem anderen Array von Objekten filtern

Dieses Problem beinhaltet das Filtern eines Arrays von Objekten (myArray) mithilfe eines Arrays von Objekten ( meinFilter). Das Ziel besteht darin, ein neues Array (myArrayFiltered) zu erstellen, das nur die Elemente in myArray enthält, die mit den entsprechenden Elementen in myFilter basierend auf Benutzer-ID und Projekt-ID übereinstimmen.

Betrachten Sie das folgende Beispiel:

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

Das erwartete Ergebnis ist:

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

Um diese Aufgabe zu erfüllen, können wir den Filter und einige Array-Methoden verwenden. Diese Methoden sind in modernen Browsern weit verbreitet, und für ältere Browser gibt es Polyfills.

Die Implementierung umfasst das Filtern von myArray mithilfe der Filtermethode, wobei jedes Element von myFilter zum Vergleich mit den Elementen von myArray verwendet wird. Anschließend wird mit der Methode some überprüft, ob mindestens eine Übereinstimmung zwischen den Eigenschaften userid und projectid des aktuellen Elements in myArray und des entsprechenden Elements in myFilter besteht. Wenn es eine Übereinstimmung gibt, wird das aktuelle Element in das gefilterte Ergebnis einbezogen.

Hier ist ein Beispiel-Codeausschnitt, der diesen Ansatz demonstriert:

<code class="javascript">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>

Dieser Code gibt das erwartete Ergebnis aus und liefert ein gefiltertes Array, das nur die Objekte aus myArray enthält, die den in myFilter.

angegebenen Kriterien entsprechen

Das obige ist der detaillierte Inhalt vonWie kann ich ein Array von Objekten basierend auf übereinstimmenden Eigenschaften in einem anderen Array filtern?. 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