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