[英]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.