从循环中将值插入到对象中

时间:2017-02-14 11:38:04

标签: javascript

我试图创建一个将某些值插入对象的脚本。

我基本上想要得到一系列看起来像这样的对象 -

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对象)。

谢谢,

3 个答案:

答案 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 ravitejakumarAnswer

的附录

您应该考虑为您的用例编写原型/类。 在这种情况下,您可以更好地跟踪数据。

可能是这样的:

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
    };
})();