我正在制作一些JS代码,我需要使用Javascript array.push()
将变量设置为JSON数组中的键:
var test = 'dd'+questNumb;
window.voiceTestJSON.push({test:{"title":""}, "content":{"date":""}});
questNumb
是另一个变量。在执行该代码时,我刚写入test
变量的部分只是变为键"test"
,所以我不知道如何将其写入。怎么会这样?谢谢!
答案 0 :(得分:5)
如果您想要变量作为键,则需要括号:
var object = {};
object['dd'+questNumb] = {"title":""};
object["content"] = {"date":""}; //Or object.content, but I used brackets for consistency
window.voiceTestJSON.push(object);
答案 1 :(得分:2)
你需要做这样的事情:
var test = "dd" + questNumb,
obj = {content: {date: ""}};
// Add the attribute under the key specified by the 'test' var
obj[test] = {title: ""};
// Put into the Array
window.voiceTestJSON.push(obj);
答案 2 :(得分:2)
(首先,你没有JSON数组,你有一个JavaScript对象.JSON是数据的字符串表示,其语法看起来像JavaScript的对象文字语法。)
不幸的是,当您使用JavaScript的对象文字语法来创建对象时,您无法使用变量来设置动态属性名称。您必须先创建对象,然后使用obj[propName]
语法添加属性:
var test = "dd" + questNumb,
myObj = { "content" : {"date":""} };
myObj[test] = {"title" : ""};
window.voiceTestJSON.push(myObj);
答案 3 :(得分:0)
{test:{"title":""}, "content":{"date":""}}
这是一个JS对象。所以你要将一个对象推入voiceTestJSON数组。
与JSON内部不同,JS Object属性名称可以带或不带引号。
你想做的事情可以这样实现:
var test = 'dd'+questNumb;
var newObject = {"content":{"date":""}}; //this part does not need a variable property name
newObject[test] = {"title":""};
这样您就可以使用test中包含的名称将属性设置为{“title”:“”}。