У меня есть kids
объект, который выглядит следующим образом:
const kids = {
name: 'john',
extra: {
city: 'London',
hobbies: [
{
id: 'football',
team: 'ABC',
},
{
id: 'basketball',
team: 'DEF',
},
],
},
};
, и у меня есть следующий объект, который содержит все виды спорта и дополнительную информацию для каждого.
const sports = [
{
name: 'volleyball',
coach: 'tom',
},
{
name: 'waterpolo',
coach: 'jack',
},
{
name: 'swimming',
coach: 'kate',
},
{
name: 'football',
coach: 'sara',
},
];
Я хочу получить список всех id
s в массиве хобби и просмотреть все спортивные элементы в массиве sports, найти и добавить дополнительное поле к этому объекту available
и присвоить значение true
так что результат будет выглядеть так:
const result = [
{
name: 'volleyball',
coach: 'tom',
},
{
name: 'waterpolo',
coach: 'jack',
},
{
name: 'swimming',
coach: 'kate',
},
{
name: 'football',
coach: 'sara',
available: true
},
];
кстати, вот моя попытка:
const result = kids.extra.hobbies.map(a => a.id);
for (var key in sports) {
console.log(sports[key].name);
const foundIndex = result.indexOf(sports[key].name);
if ( foundIndex > -1) {
sports[key].available = true;
}
}
console.log(sports)
но это слишком долго ... я ищу один код, выглядящий как лайнери надежная логика.