Wenn ein Element in einem Array bereits vorhanden ist, fügen Sie es nicht erneut hinzu
Ich habe ein array von Objekten, die wie folgt aussieht:
var array = [
{id:123, value:"value1", name:"Name1"},
{id:124, value:"value2", name:"Name1"},
{id:125, value:"value3", name:"Name2"},
{id:126, value:"value4", name:"Name2"}
...
];
Wie Sie sehen können, manche Namen wiederholt werden. Ich will mir ein neues array mit Namen, aber wenn einige Namen wiederholt, den ich nicht wollen, um es erneut hinzuzufügen. Ich möchte dieses array:
var newArray = ["Name1", "Name2"];
Ich versuche, dies zu tun mit map
:
var newArray = array.map((a) => {
return a.name;
});
Aber das problem ist, dass dieses zurück:
newArray = ["Name1", "Name1", "Name2", "Name2"];
Wie kann ich einstellen, dass eine bestimmte Bedingung innerhalb map
so dass es nicht zurückkehren wird, ein element, das schon vorhanden ist? Ich möchte das mit map
oder einige andere ECMAScript - 5-oder ECMAScript - 6-Funktion.
InformationsquelleAutor der Frage snoopy25 | 2016-12-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie zu beschränkt sind ES5, würde ich Lodash
_.uniq
InformationsquelleAutor der Antwort AndrewHenderson
Versuchen Sie dies:
InformationsquelleAutor der Antwort Rafael Gomes Francisco
In ES5, verwenden Sie ein Objekt wie ein dictionary für O(n) Leistung.
Wird dies nur funktionieren, wenn alle Schlüssel sind Strings.
Könnten Sie tun, die gleiche Sache in einem Ausdruck, wenn Sie mögen:
aber ich finde die imperative form einfacher zu Lesen.
InformationsquelleAutor der Antwort joeytwiddle
Für diejenigen, die ein 1 liner
ohne oder mit Methoden der array-Prototyp
nützlich sein könnte für das schreiben einige Reine Funktionen für den Umgang mit dieser
InformationsquelleAutor der Antwort Tyrell
InformationsquelleAutor der Antwort AKHIL