Задать вопрос
Ivan-P
@Ivan-P

Как из массива объектов извлекать значения одного свойства при определённых значениях другого свойства?

Есть массив объектов:

countries = [
  {
    "name": "Afghanistan",
    "alpha-2": "AF", "country-code": "004"
  },
  {
    "name": "Åland Islands",
    "alpha-2": "AX",
    "country-code": "248"
  }
]

Как имея массив значений alpha-2 получить массив соответствующих значений name?
  • Вопрос задан
  • 224 просмотра
Подписаться 1 Оценить 2 комментария
Помогут разобраться в теме Все курсы
  • Нетология
    Fullstack-разработчик на Python + нейросети
    20 месяцев
    Далее
  • Skillfactory
    Профессия Веб-разработчик
    12 месяцев
    Далее
  • Академия Eduson
    Fullstack-разработчик на JavaScript
    11 месяцев
    Далее
Решения вопроса 2
@Aves
function getNames() {
  var alpha2Array = Array.apply(null, arguments);
  return countries.reduce((s, e) => {
    if (~alpha2Array.indexOf(e['alpha-2'])) s.push(e.name);
    return s;
  }, []);
}

console.log(getNames('AX', 'AF'));
console.log(getNames.apply(null, ['AX', 'AF']));
Ответ написан
Комментировать
AMar4enko
@AMar4enko
"Однострочник" для lodash
_(countries)
  .filter({'alpha-2': 'AF'})
  .pluck('name').value();

_(countries)
  .filter(country => alphas.indexOf(country['alpha-2']) > -1)
  .pluck('name').value();
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
alphaArr = [];
countries.forEach(function (country) {
    //any logic
    alphaArr.push(country[name]);
});
Ответ написан
Комментировать
@korotkin
Например так:
var res = countries.map(function(o){
return o['alpha-2']
})


Или так, порядок поменяется:
var i = countries.length,
res = [];

while(i--){
  res.push(countries[i]['alpha-2']);
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы