向对象添加多个元素

时间:2015-12-17 07:32:53

标签: javascript object

我有以下代码:

var keyword = "foo";
var business_type = "bakery";
var int = "1";
var text = "bar";
keywords[keyword] = {business_type : {int : { 0 : text}}};

关键字对象已存在且具有内容。所以我只想添加一些东西。 我希望输出是这样的对象:

var keywords = {"foo" : {"bakery" : { "1" : { 0 : "bar"}}}};

(不确定我对输出的描述是否正确,但我认为你会明白这一点) 但是我得到了这样的输出

var keywords = {"foo" : {"business_type" : { "int" : { 0 : "bar"}}}};

所以我猜代码认为我的关键变量(business_type,int)是字符串。如何取代变量值而不是字符串?

3 个答案:

答案 0 :(得分:0)

keywords[keyword][business_type][int] = {0:text};

或更安全的方式

keywords[keyword] = {};
keywords[keyword][business_type] = {};
keywords[keyword][business_type][int] = {0:text};

你可以做任何一种方式。

答案 1 :(得分:0)

您必须使用数组表示法并初始化对象的每个级别:

var keyword = "foo";
var business_type = "bakery";
var int = "1";
var text = "bar";

var keywords = {};
keywords[keyword] = {};
keywords[keyword][business_type] = {};
keywords[keyword][business_type][int] = { 0: text };

var out = JSON.stringify(keywords, null, 3);
console.log(out);
document.write('<pre>' + out + '</pre>');

答案 2 :(得分:0)

使用变量来声明对象的属性是不可能的。尝试使用括号:

keywords[keyword] = {[business_type] : {[int] : { 0 : text}}};

或明确写出属性:

keywords[keyword] = {"bakery" : {"1" : { 0 : text}}};