[英]How would you change values/add to nested object data inside array of objects using Javascript?
const beers = [
{
id: '100',
name: 'stoneys'
},
{
id: '200',
name: 'budweiser'
},
{
id: '300',
name: 'miller'
},
{
id: '400',
name: 'corona'
}
];
const people = [
{
name: 'steve',
teams: [
{
name: 'pirates',
beers: ['100']
},
{
name: 'penguins',
beers: ['300']
}
]
},
{
name: 'jim',
teams: [
{
name: 'indians',
beers: ['200']
},
{
name: 'blue jackets',
beers: ['100', '400']
}
]
}
];
let newPeople = people.map(fan => {
fan.teams.map(team => {
team.beers.map(beer => beers.filter(brand => brand.id === beer)[0])
});
});
以上是我整理的一个示例,以最好地展示我的问题。 我无法理解为什么 object arrays 的嵌套映射 (.map()) 不允许我更改嵌套数据。 当我控制台日志结果时,我得到一个“[未定义,未定义]”或未更改的“人”数组。
我想返回与“人”相同的数组,除了用“啤酒”数组中的相应对象替换嵌套的“啤酒”数组(people.teams.beers [])。 下面的成功结果示例:
{
name: 'steve',
teams: [
{
name: 'pirates',
beers: [
{
id: '100',
name: 'stoneys'
}
]
},
{
name: 'penguins',
beers: [
{
id: '300',
name: 'miller'
}
]
}
]
}
Array.map需要一个 function ,它将单个数组元素作为参数并返回一个映射值。 在您的情况下,您没有从映射函数返回任何值,因此您两次未定义
const beers = [ { id: '100', name: 'stoneys' }, { id: '200', name: 'budweiser' }, { id: '300', name: 'miller' }, { id: '400', name: 'corona' } ]; const people = [ { name: 'steve', teams: [ { name: 'pirates', beers: ['100'] }, { name: 'penguins', beers: ['300'] } ] }, { name: 'jim', teams: [ { name: 'indians', beers: ['200'] }, { name: 'blue jackets', beers: ['100', '400'] } ] } ]; let newPeople = people.map(fan => { let teams = fan.teams.map(team => { let beer = team.beers.map(beer => beers.filter(brand => brand.id === beer)[0]); return { name: team.name, beers: beer } }); return { name: fan.name, teams: teams } }); console.log(newPeople);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.