Задать вопрос
@jjsplash

Как получить значения из массива объектов по id?

Есть массив команд АПЛ epl (для каждой команды):

points: 30
position: 1
result: "Champions League"
status: "Promotion"
team_id: 2524

Но тут нет названий команд.
Есть массив с id из массива epl и соответствующих id названий команд:

let teamNames = [ 
  { id: 2522, name: 'Arsenal' },
  { id: 2520, name: 'Aston Villa' },
  { id: 2513, name: 'Burnley' },
  { id: 2518, name: 'Brighton' },
  { id: 2537, name: 'Brentford' },
  { id: 2524, name: 'Chelsea' },
  { id: 2515, name: 'Crystal Palace' },
  { id: 2516, name: 'Everton' },
  { id: 2546, name: 'Leeds Utd' },
  { id: 12424, name: 'Leicester City' },
  { id: 2509, name: 'Liverpool' },
  { id: 12400, name: 'Manchtester City' },
  { id: 2523, name: 'Manchester Utd' },
  { id: 849, name: 'Newcastle Utd' },
  { id: 2510, name: 'Norwich City' },
  { id: 12423, name: 'Southampton' },
  { id: 12295, name: 'Tottenham' },
  { id: 2517, name: 'Watford' },
  { id: 12401, name: 'West Ham' },
  { id: 850, name: 'Wolverhampton' }
];

Как из массива teamNames получить названия команд по соответствующим id и добавить эти названия в массив epl?
  • Вопрос задан
  • 191 просмотр
Подписаться 2 Простой 2 комментария
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Сделать из teamNames объект, где ключами будут id, а значениями name. Доставать из этого массива имена при переборе epl, используя team_id в качестве ключа.

Собираем новый массив:

const teamNamesObj = Object.fromEntries(teamNames.map(n => [ n.id, n.name ]));
const eplWithNames = epl.map(n => ({ ...n, team_name: teamNamesObj[n.team_id] }));

Обновляем существующий:

epl.forEach(function(n) {
  n.team_name = this[n.team_id];
}, teamNames.reduce((acc, n) => (acc[n.id] = n.name, acc), {}));
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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