如何在JavaScript上的array.push上设置JSON数组键

时间:2012-01-05 13:22:33

标签: javascript arrays json push

我正在制作一些JS代码,我需要使用Javascript array.push()将变量设置为JSON数组中的键:

var test = 'dd'+questNumb;
window.voiceTestJSON.push({test:{"title":""}, "content":{"date":""}});

questNumb是另一个变量。在执行该代码时,我刚写入test变量的部分只是变为键"test",所以我不知道如何将其写入。怎么会这样?谢谢!

4 个答案:

答案 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”:“”}。