簡體   English   中英

如何動態命名屬性並將對象推入該屬性?

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

我正在使用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 },
    ]
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM