2016-08-20 74 views
0

我有JSON:動態添加對象的JavaScript數組中

var obj = '{"Form":[],"Provider":[]}'; 

我推可變值的數據進行動態對象:

var pName = 'Tester'; 
var data = { 
    pName :["testing"] 
}; 
console.log(obj['Provider'].push(data)); 

但是,增加了PNAME變量名但不變量值那就是測試儀,我試過用+ pName +也不行。

返回:

{"Form":[],"Provider":[{"pName":["Testing"]}]} 

任何幫助,將不勝感激。

+0

你不能把一個屬性,如'JSON字符串的Provider';您必須先將該字符串轉換爲帶有JSON.parse()的JavaScript對象(或者將其指定爲JavaScript對象字面值開頭)。 – 2016-08-20 09:46:29

回答

2

您必須在屬性名稱附近使用[]語法。它將評估[]中的表達式並返回該值。

查看示例。這裏的data's屬性名稱爲'Tester'

var obj = {"Form":[],"Provider":[]}; 
 

 
var pName = 'Tester'; 
 
var data = { 
 
    [pName] :["testing"] 
 
}; 
 

 
console.log(data.pName); // undefined 
 
console.log(data.Tester); // OK 
 

 
obj['Provider'].push(data); 
 

 
console.log(obj);

+0

我即將回答這個問題。哈哈。偉大的工作先生。乾杯! – 2016-08-20 08:28:59

+0

如果您要介紹'[keyname]:value'語法,您至少應該給出這個結構的正確名稱。另外,確切地說,這個語法不會「返回」該值;它**使用**作爲關鍵名稱的值。最後,你忽略了任何提及OP的問題,試圖操縱JSON字符串而不先將其轉換爲JavaScript對象。 – 2016-08-20 09:48:42