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

How do I dynamically name a property and push objects to it?

本文关键字:属性 对象 何动态 动态      更新时间:2023-09-26

我正在使用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 个数组。

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

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,一个数组只有值。您正在考虑数组,但创建了一个对象。

你可以

这样做...

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 },
    ]
}