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
Freigeben: 2024-12-21 19:53:12
Original
264 Leute haben es durchsucht

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"});
Nach dem Login kopieren

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
  ))
);
Nach dem Login kopieren

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;
  });
});
Nach dem Login kopieren

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))
  );
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage