Zakładając, że mam następujące:
var array =
[
{"name":"Joe", "age":17},
{"name":"Bob", "age":17},
{"name":"Carl", "age": 35}
]
Jaki jest najlepszy sposób, aby uzyskać tablicę wszystkich różnych grup wiekowych, tak aby uzyskać tablicę wyników:
[17, 35]
Czy jest jakiś sposób, w jaki mógłbym alternatywnie skonstruować dane lub lepszą metodę, tak że nie musiałbym iterować przez każdą tablicę sprawdzając wartość „age” i sprawdzać, czy istnieje inna tablica, i czy ją dodać, jeśli nie?
Gdyby istniał jakiś sposób, mogłem wyciągnąć różne epoki bez iteracji ...
Obecny nieefektywny sposób chciałbym poprawić ... Jeśli to znaczy, że zamiast „tablicy” jest tablicą obiektów, ale „mapą” obiektów z jakimś unikalnym kluczem (tj. „1,2,3”), która byłaby też dobrze. Po prostu szukam najbardziej wydajnego sposobu.
Oto jak obecnie to robię, ale dla mnie iteracja wydaje się po prostu kiepska dla wydajności, nawet jeśli działa ...
var distinct = []
for (var i = 0; i < array.length; i++)
if (array[i].age not in distinct)
distinct.push(array[i].age)
Set
przedmioty map
są marnotrawstwem. Ta praca zajmuje tylko prosty .reduce()
etap.