下面我的代码出了什么问题? grandParent
未定义,我想要实现的是每个祖父母都有父属性,每个父母都有子(对象数组)
喜欢这样
[{
name: 'a',
parent: [{
name: 'b',
child: [{
name: 'c'
}]
}]
}]
下面的代码不起作用
let grandParent = []
_.times(5, () => grandParent.push({
name: faker.name.findName(),
parent: []
}))
grandParent = grandParent.forEach(function(o) {
return o.parent.push({ name: faker.name.findName() })
})
console.log(grandParent) //why here is undefined?
答案 0 :(得分:0)
map
没有返回任何内容,您必须使用push
。此外,concat
返回数组的新大小,以返回使用grandParent = grandParent.map(function(o) {
return o.parent.concat([{ name: faker.name.findName() }])
})
console.log(grandParent)
grandParent = grandParent.forEach(function(o) {
o.parent.push({ name: faker.name.findName()})
})
console.log(grandParent)
其他方法是不从forEach返回任何内容,只更新原始数组。
{{1}}
答案 1 :(得分:0)
来自here
的MDN文档返回值:未定义
let grandParent = [
{ name: 'grandname0', parent: [] },
{ name: 'grandname1', parent: [] },
{ name: 'grandname2', parent: [] },
{ name: 'grandname3', parent: [] },
{ name: 'grandname4', parent: [] }
];
grandParent.forEach(function(o) {
o.parent.push({ name: 'parent1' });
});
console.log(grandParent);

答案 2 :(得分:0)
map不返回任何内容。使用{{3}}功能会有所帮助。您的代码看起来应该是这样的。
let grandParent = []
_.times(5, () => grandParent.push({
name: faker.name.findName(),
parent: []
}))
grandParent = grandParent.map(function(o) {
return o.parent.concat({ name: faker.name.findName() })
})
的console.log(祖父母)