У меня есть следующий код:

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) являются строками. Как можно взять значение переменной вместо строки?

0
Carle B. Navy 17 Дек 2015 в 10:32

3 ответа

Лучший ответ
keywords[keyword][business_type][int] = {0:text};

Или более безопасный способ

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

Вы можете сделать так или иначе.

0
void 17 Дек 2015 в 07:48

Вы должны использовать обозначение массива и инициализировать каждый уровень объекта:

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>');
0
Shanoor 17 Дек 2015 в 07:42

Невозможно использовать переменные для объявления свойств объектов, как вы. Попробуйте использовать скобки:

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

Или напишите свойства явно:

keywords[keyword] = {"bakery" : {"1" : { 0 : text}}};
0
ScienceSoft team 17 Дек 2015 в 07:47