繁体   English   中英

如何向JSON对象添加元素

[英]How to add elements to JSON Object

我已经为这个问题苦苦挣扎了6个小时,但仍无法解决。

也许您可以帮助我。

我有一个js对象:

 var year_data = {
         "jan": [],
         "feb": [],
         "mar": [],
         "apr": [],
         "may": [],
         "jun": [],
         "jul": [],
         "aug": [],
         "sep": [],
         "oct": [],
         "nov": [],
         "dec": [],

         };

我需要得到这样的结果:

var year_data= {

    jan : [
    {
        23 : [
        {
            "1" : "some text for 23",
            "2" : "some text for 23_1",
            "3" : "some text for 23_2"
        }
        ],

        26 : [
        {
            "1" : "some text for 26",
            "2" : "some text for 26_1",
            "3" : "some text for 26_2"
        }
        ]
    }
    ],



    feb : [
    {
        17 : [
        {
            "1" : "some text for 17_1",
            "2" : "some text for 17_2",
            "3" : "some text for 17_3"
        }
        ]
    }
    ],



};

我需要动态生成此对象。

我这样做:

year_data.jan.push(
    {19: [{1:"Some text for 19_1",
          2:"Some text for 19_2"}]
    }
);

之后,我做了JSON.stringify(year_data),在我将19更改为变量名之前它就起作用了。

(控制台)前: {"jan":[{"19":[{"1":"Some text for 19_1","2":"Some text for 19_2"}]}],"feb":[],"mar":[],"apr":[],"may":[],"jun":[],"jul":[],"aug":[],"sep":[],"oct":[],"nov":[],"dec":[]}

变更后

var current_day=19;
   year_data.jan.push(
    {current_day: [{1:"Some text for 19_1",
          2:"Some text for 19_2"}]
    }
);

我懂了:

{"jan":[{"current_day":[{"1":"Some text for 19_1","2":"Some text for 19_2"}]}],"feb":[],"mar":[],"apr":[],"may":[],"jun":[],"jul":[],"aug":[],"sep":[],"oct":[],"nov":[],"dec":[]}

而且我不知道如何解决它。

我已经尝试过在JavaScript对象文字中使用变量作为键

但是结果是:

year_data.jan[19]=[{1:"Some text for 19_1", 2:"Some text for 19_2"}];
var json=JSON.stringify(year_data);

console: {"jan":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[{"1":"Some text for 19_1","2":"Some text for 19_2"}]],"feb":[],"mar":[],"apr":[],"may":[],"jun":[],"jul":[],"aug":[],"sep":[],"oct":[],"nov":[],"dec":[]}

所以,我需要这两种方式

year_data.jan.push({**VARIABLE_name**: [{1:"Some text for 19_1", 2:"Some text for 19_2"}]    });

或需要解决的内容year_data.jan[19]=[{1:"Some text for 19_1", 2:"Some text for 19_2"}];var json=JSON.stringify(year_data);

并得到

{"jan":[{"19":[{"1":"Some text for 19_1","2":"Some text for 19_2"}]}],"feb":[],"mar":[],"apr":[],"may":[],"jun":[],"jul":[],"aug":[],"sep":[],"oct":[],"nov":[],"dec":[]}

代替

{"jan":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[{"1":"Some text for 19_1","2":"Some text for 19_2"}]],"feb":[],"mar":[],"apr":[],"may":[],"jun":[],"jul":[],"aug":[],"sep":[],"oct":[],"nov":[],"dec":[]}

伙计们,我真的需要你的帮助

在ES6版之前,Javascript不支持对象初始化程序中的动态属性,因此您必须这样做:

var current_day = 19;
var temp = {};
temp[current_day] = whatever;
year_data.jan.push(temp);

在ES6中,动态属性包含在方括号中,例如:

year_data.jan.push({
   [current_day]: whatever
});
var current_day=19;
var obj = {}; 
year_data.jan.push(
    obj[current_day]: [{1:"Some text for 19_1",
          2:"Some text for 19_2"}]

);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM