Javascript 无法在循环中设置未定义的属性

Javascript 无法在循环中设置未定义的属性,javascript,ecmascript-6,Javascript,Ecmascript 6,我正在做一个循环来生成对象数组。我使用faker生成假名字,但在指定的迭代中,我想插入我自己的值,在本例中是人的车。 下面的代码我得到了无法设置未定义车的属性,怎么了 const person = [] times(2, index => { if (index === 0) { person[0].car = 'honda' } else if(index ===1) { person[1].car = 'ford' } person.push({

我正在做一个循环来生成对象数组。我使用faker生成假名字,但在指定的迭代中,我想插入我自己的值,在本例中是人的车。 下面的代码我得到了无法设置未定义车的属性,怎么了

const person = []
times(2, index => {
  if (index === 0) {
    person[0].car = 'honda'
  } else if(index ===1) {
    person[1].car = 'ford'
  }

  person.push({
    name: faker.random.name()
  })
}
console.log(person)

除了缺少一些右括号外,您尝试先访问不存在的对象(
person[0].car…
),然后创建它(
person.push(…)

颠倒顺序

let newPerson = { name: faker.random.name(), car: 'dodge' };
person.push(newPerson);

person
最初是一个空数组,其中没有对象,因此当尝试执行
person[0]时,car
会抛出错误,因为
person[0]
undefined
并且您无法从
undefined
设置或获取任何属性

而是这样做

person[0] = {}
person.car = 'honda'


在分配给对象之前,您需要创建一个对象:
person[0]={}
并且它可能不是常量,并且是faker.random.name一个返回对象的函数?
如果(index==0)person[0]…
…?!那应该是
person[index]…
…使用const person=Array(2)。fill({})你也许应该读一读这篇关于@mplungjan persons的文章。只有您根据需要多次重复“newPerson=…;person.push(newPerson);”才能进入循环。
person[0] = {'car': 'honda'}