2015-09-10 2 views
-1

Я хочу заменить «placeholder» на {«John»: «Dough»} динамически с вызовом функции.Динамическое изменение свойства JSON в Javascript

Это работает:

a = {foo:{bar:{baz:"placeholder"}}}; 
a.foo.bar.baz = {"John" : "Dough"}; 
console.log(JSON.stringify(a)); 

> {"foo":{"bar":{"baz":{"John":"Dough"}}}} 

Но это не делает:

var test = function(key, value) { 
    a = {foo:{bar:{baz:"placeholder"}}}; 
    a.foo.bar.baz = { key: value}; 
    console.log(JSON.stringify(a)); 
    }; 
test("John", "Dough"); 

> {"foo":{"bar":{"baz":{"key":"Dough"}}}} 

Это также не работает:

var test = function(key, value) { 
    a = {foo:{bar:{baz:"placeholder"}}}; 
    a.foo.bar.baz[key] = value; 
    console.log(JSON.stringify(a)); 
    }; 
test("John", "Dough"); 

> {"foo":{"bar":{"baz":"placeholder"}}} 

Я проверяю на Node.js. Вероятно, в браузере не изменится.

+0

нет такого понятия «объект JSON» в Java Script. есть json, который является серифицированной формой объекта и объектом. период. говоря json object, это как сказать «торт-рецепт торта», либо это рецепт торта, либо это торт. между ними нет. –

+0

@ArunPJohny - на этот вопрос не отвечает тот, который вы называете дубликатом. Этот вопрос спрашивает, как заменить свойство. Если вы действительно посмотрите на предоставленный код, вы увидите, что OP уже знает, как динамически ссылаться на свойства с использованием переменных в качестве имен ключей. Он это делает. Остановитесь, прежде чем вы будете отмечены как дубликаты в будущем. – Archer

+0

Некоторые SO гуру действительно очень нетерпимы к вопросам. Полагаю, я ясно выразил свою проблему. Во всяком случае, это отличный сайт. – rsa

ответ

1

Изменение функции как ниже

var test = function(key, value) { 
    a = {foo:{bar:{baz:"placeholder"}}}; 
    a.foo.bar.baz = {}; //creating a new object as `baz` value then assign 
    a.foo.bar.baz[key] = value; 
    console.log(JSON.stringify(a)); 
}; 
+0

да Я отредактировал и разместил комментарии. – Mritunjay

+0

Адвокат дьявола здесь - что, если 'baz' не является единственным свойством' bar'? С помощью этого кода вы уничтожите все другие свойства. – Archer

+0

Нет, я просто говорю «bar.baz = {}', почему это повлияет на другие свойства 'bar'? – Mritunjay

Смежные вопросы