Heim >Web-Frontend >js-Tutorial >Wie kann ich doppelte Objekte effizient aus einem Array in JavaScript entfernen?

Wie kann ich doppelte Objekte effizient aus einem Array in JavaScript entfernen?

DDD
DDDOriginal
2024-12-21 19:53:12220Durchsuche

How Can I Efficiently Remove Duplicate Objects from an Array in JavaScript?

Duplikate aus einem Array von Objekten entfernen: Eine detaillierte Untersuchung

Dieser Artikel befasst sich mit einem häufigen Problem, das bei der Arbeit mit Arrays von Objekten auftritt: dem Entfernen doppelter Einträge. Unser Ziel ist es, ein tiefgreifendes Verständnis der besten Methoden zur Lösung dieser Aufgabe zu vermitteln.

Problemstellung

Betrachten Sie das folgende Objekt:

obj = {};
obj.arr = new Array();
obj.arr.push({place: "here", name: "stuff"});
obj.arr.push({place: "there", name: "morestuff"});
obj.arr.push({place: "there", name: "morestuff"});

Unser Ziel ist es, doppelte Objekte aus obj.arr zu entfernen, sodass es nur eindeutige Elemente enthält.

ES6 Magie

Durch die Nutzung der Leistungsfähigkeit von ES6 können wir eine einzeilige Lösung verwenden:

obj.arr = obj.arr.filter((value, index, self) =>
  index === self.findIndex((t) => (
    t.place === value.place && t.name === value.name
  ))
);

Generischer Ansatz

Für a Um eine vielseitigere Lösung zu finden, beachten Sie den folgenden Code:

const uniqueArray = obj.arr.filter((value, index) => {
  const _value = JSON.stringify(value);
  return index === obj.arr.findIndex(obj => {
    return JSON.stringify(obj) === _value;
  });
});

Property Strategie

Ein alternativer Ansatz besteht darin, die Eigenschaften der Objekte zu vergleichen:

const isPropValuesEqual = (subject, target, propNames) =>
  propNames.every(propName => subject[propName] === target[propName]);

const getUniqueItemsByProperties = (items, propNames) => 
  items.filter((item, index, array) =>
    index === array.findIndex(foundItem => isPropValuesEqual(foundItem, item, propNames))
  );

Erklärung

Die bereitgestellten Lösungen nutzen Folgendes Konzepte:

  • Filter: Wählt Array-Elemente aus, die eine bestimmte Anforderung erfüllen Bedingung.
  • findIndex: Gibt den Index des ersten Elements im Array zurück, das die Bedingung erfüllt.
  • Eigenschaftsvergleich: Bestimmt, ob zwei Objekte identische Werte für eine Reihe spezifizierter Eigenschaften haben.

Durch die Anwendung dieser Strategien können wir doppelte Objekte effektiv aus einem Array entfernen, Stellen Sie sicher, dass jedes Element einzigartig ist.

Das obige ist der detaillierte Inhalt vonWie kann ich doppelte Objekte effizient aus einem Array in JavaScript entfernen?. 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