Supponendo che ho il seguente:
var array =
[
{"name":"Joe", "age":17},
{"name":"Bob", "age":17},
{"name":"Carl", "age": 35}
]
Qual è il modo migliore per essere in grado di ottenere una matrice di tutte le età distinte in modo tale da ottenere una matrice di risultati di:
[17, 35]
C'è un modo in cui potrei in alternativa strutturare i dati o un metodo migliore in modo tale da non dover scorrere attraverso ciascun array verificando il valore di "age" e verificando l'esistenza di un altro array e aggiungendolo se no?
Se ci fosse un modo, potrei semplicemente tirare fuori le epoche distinte senza iterare ...
Il modo inefficace attuale vorrei migliorare ... Se ciò significa che invece di "array" sia un array di oggetti, ma una "mappa" di oggetti con una chiave univoca (ovvero "1,2,3") che sarebbe va bene lo stesso. Sto solo cercando il modo più efficiente in termini di prestazioni.
Quello che segue è come lo faccio attualmente, ma per me, l'iterazione sembra essere scadente per l'efficienza anche se funziona ...
var distinct = []
for (var i = 0; i < array.length; i++)
if (array[i].age not in distinct)
distinct.push(array[i].age)
Set
oggetto e map
sono dispendiosi. Questo lavoro richiede solo una .reduce()
fase semplice .