无法在循环中设置undefined的属性

时间:2019-03-22 10:14:23

标签: javascript ecmascript-6

我正在循环生成对象数组。我使用过造假者来生成假名,但是在指定的迭代中,我想插入自己的值,在这种情况下,是人的汽车。 下面的代码我无法设置未定义汽车的属性,怎么了?

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)

2 个答案:

答案 0 :(得分:0)

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

颠倒顺序。

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

答案 1 :(得分:0)

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

相反,这样做

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

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