使用push和forEach创建数组和对象

时间:2018-03-13 06:06:19

标签: javascript reactjs

下面我的代码出了什么问题? 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?

3 个答案:

答案 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(祖父母)