如何动态命名属性并将对象推送到它?

时间:2015-03-11 10:51:19

标签: javascript

我正在使用Angular,我可以使用Underscore库。

this.people = {};

var self = this;

var data = { 'name' : 'cool', 'age' : 23 };

我想在people对象中动态创建数组,并且能够将数据推送到每个对象......

所以我认为像这样的东西会起作用......

var arrName = 'group1';

this.people[arrName].push(data); 

...或

this.people[arrName].push(data);

我想要一个像;

这样的对象
people : {
    'group1' : {
        { 'name' : 'test', 'age' : 21 },
        { 'name' : 'test', 'age' : 27 },
        { 'name' : 'test', 'age' : 23 },
    },
    'group2' : {
        { 'name' : 'test2', 'age' : 21 },
        { 'name' : 'testaaa', 'age' : 27 },
        { 'name' : 'testbbb', 'age' : 23 },
    }
}

console.log(self.people);

但'group1'和'group2'必须是动态的,并且可以从变量中创建......

我附上了一个jsfiddle。

https://jsfiddle.net/2urqvxzh/1/

然后这些将被存储在LocalStorage中,并且对象很可能在每个数组中达到几百个项目,并且人们中最多可能有50个数组。

2 个答案:

答案 0 :(得分:0)

您需要像这样动态创建数组:

var people = {};
var arrName1 = 'group1';

people[arrName1] = []; // here declare an array with [] or new Array()
people[arrName1].push(data); // then you can push

你的对象最终会是这样的:

people : {
    'group1' : [ //group 1 needs to be an array, not an object
        { 'name' : 'test', 'age' : 21 },
        { 'name' : 'test', 'age' : 27 },
        { 'name' : 'test', 'age' : 23 },
    ],
    'group2' : [
        { 'name' : 'test2', 'age' : 21 },
        { 'name' : 'testaaa', 'age' : 27 },
        { 'name' : 'testbbb', 'age' : 23 },
    ]
}

对象需要key/value,数组只有值。你在考虑数组但是创建了一个对象。

答案 1 :(得分:0)

你可以这样做......

var people = {};
var arrName1 = 'group1';
var data = { 'name' : 'cool', 'age' : 23 };

people[arrName1] = new Array(data);

以下是JSFiddle示例https://jsfiddle.net/DivakarDass/2urqvxzh/6/

你的输出就像......

people : {
    'group1' : [
        { 'name' : 'test', 'age' : 21 },
        { 'name' : 'test', 'age' : 27 },
        { 'name' : 'test', 'age' : 23 },
    ],
    'group2' : [
        { 'name' : 'test2', 'age' : 21 },
        { 'name' : 'testaaa', 'age' : 27 },
        { 'name' : 'testbbb', 'age' : 23 },
    ]
}