我试图创建一个将某些值插入对象的脚本。
我基本上想要得到一系列看起来像这样的对象 -
myObj.data.person[0].name = 'name 1';
myObj.data.person[1].name = 'name 2';
myObj.data.person[2].name = 'name 3';
等
这是我的对象,其中包含一个对象数组。
var addressBook = {
data: [
person = {
name: '',
address: ''
}
]
}
用于插入重复信息的for循环。
for (i=0; i < 10; i++)
{
myObj.data.person[i] = {name: 'Joe Bloggs', address: 'Main Street'};
console.log(myObj.data.person.name);
}
每当我运行此代码时,我都会收到以下错误 -
Uncaught TypeError: Cannot set property 'person' of undefined at <anonymous>:14:24
所以,问题是我哪里出错了?此外,这会被认为是创建对象列表的正确方法(例如人1,人2等)吗?
(我最终想到如何创建类似Person构造函数的东西,并使用循环来创建多个Person对象)。
谢谢,
答案 0 :(得分:1)
请尝试按以下方式更改对象表示法
var addressBook = {
data: [{
name: '',
address: ''
},
{
name: 'Roshan',
address: ''
},
{
name: 'Roshan1',
address: ''
}
]
}
答案 1 :(得分:0)
试试这个:
myObj.data[i].person = 'John';
myObj.data[i].address = 'NYC';
答案 2 :(得分:0)
请参阅此答案作为isetty ravitejakumar的Answer
的附录您应该考虑为您的用例编写原型/类。 在这种情况下,您可以更好地跟踪数据。
可能是这样的:
var AddressBook = {},
Person = {};
(function() {
AddressBook.prototype = {
data: [],
add: function(person) {
this.data.push(person);
}
};
Person = function(name, address) {
this.name = name;
this.address = address;
}
Person.prototype = {
name,
address
};
})();