2015-09-10 135 views
-1

我想用函數調用動態地用{「John」:「Dough」}動態替換「placeholder」。用Javascript動態替換JSON屬性

這工作:

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腳本。有json,這是一個對象的serielized形式,和一個對象。期。說json反對這就像說「蛋糕配方蛋糕」,要麼是配方蛋糕,要麼是蛋糕。沒有之間。 –

+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

nope我只是說'bar.baz = {}',爲什麼這會影響'bar'的其他屬性? – Mritunjay