【发布时间】:2018-05-14 00:04:27
【问题描述】:
我有一个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',
},
];
我想获取 hobbies 数组中所有 ids 的列表并遍历运动数组中的每个运动项目,并找到,为该对象添加一个额外的字段 available 并给出一个值true,以及其对应的团队名称,因此结果将如下所示:
const result = [
{
name: 'volleyball',
coach: 'tom',
},
{
name: 'waterpolo',
coach: 'jack',
},
{
name: 'swimming',
coach: 'kate',
},
{
name: 'football',
coach: 'sara',
available: true, // it exists in kids' hobbies
team: 'DEF' // get it from kids' hobbies
},
];
顺便说一下,这是我的尝试:
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)
但这不包括团队。如何将其添加到上述代码中?
【问题讨论】:
标签: javascript arrays json ecmascript-6 mapreduce