Angenommen, ich habe Folgendes:
var array =
[
{"name":"Joe", "age":17},
{"name":"Bob", "age":17},
{"name":"Carl", "age": 35}
]
Was ist der beste Weg, um ein Array aller unterschiedlichen Altersstufen zu erhalten, sodass ich ein Ergebnis-Array von:
[17, 35]
Gibt es eine Möglichkeit, die Daten oder eine bessere Methode alternativ so zu strukturieren, dass ich nicht jedes Array durchlaufen muss, um den Wert von "age" zu überprüfen und anhand eines anderen Arrays auf seine Existenz zu prüfen und es hinzuzufügen, wenn nicht?
Wenn es eine Möglichkeit gäbe, könnte ich einfach die verschiedenen Zeitalter herausziehen, ohne zu iterieren ...
Derzeit ineffiziente Art und Weise möchte ich verbessern ... Wenn es bedeutet, dass anstelle von "Array" ein Array von Objekten, sondern eine "Karte" von Objekten mit einem eindeutigen Schlüssel (dh "1,2,3") wäre okay auch. Ich bin nur auf der Suche nach dem leistungsstärksten Weg.
Das Folgende ist, wie ich es derzeit mache, aber für mich scheint die Iteration aus Effizienzgründen nur mies zu sein, obwohl sie funktioniert ...
var distinct = []
for (var i = 0; i < array.length; i++)
if (array[i].age not in distinct)
distinct.push(array[i].age)
Set
Objekt und map
s sind verschwenderisch. Dieser Job dauert nur eine einfache .reduce()
Phase.