Предполагая, что у меня есть следующее:
var array =
[
{"name":"Joe", "age":17},
{"name":"Bob", "age":17},
{"name":"Carl", "age": 35}
]
Каков наилучший способ получить массив всех различных возрастов, чтобы я получил массив результатов:
[17, 35]
Есть ли какой-нибудь способ, которым я мог бы альтернативно структурировать данные или лучший метод так, чтобы мне не приходилось бы перебирать каждый массив, проверяя значение «age», проверять другой массив на наличие и добавлять его, если нет?
Если бы был какой-то способ, я мог бы просто вытащить различные эпохи, не повторяя ...
Текущий неэффективный способ я бы хотел улучшить ... Если бы это означало, что вместо «массива» был бы массив объектов, а была бы «карта» объектов с некоторым уникальным ключом (то есть «1,2,3»), который был бы тоже хорошо Я просто ищу наиболее эффективный способ.
Вот как я это делаю в настоящее время, но для меня итерация выглядит просто неприлично для эффективности, даже если она работает ...
var distinct = []
for (var i = 0; i < array.length; i++)
if (array[i].age not in distinct)
distinct.push(array[i].age)
Set
объект и map
s расточительны. Эта работа просто проходит простой .reduce()
этап.