2009-08-02 220 views
224

,如果我有一个JSON对象说:删除JSON属性

var myObj = {'test' : {'key1' : 'value', 'key2': 'value'}} 

我可以删除 '键1',使其成为:

{'test' : {'key2': 'value'}} 
+5

只是为了迂回,这是一个Javascript对象,而不是“JSON对象”JSON是Javascript对象的字符串表示形式。 – Davy8 2012-03-31 14:30:50

回答

382

简单:

delete myObj.test.key1; 
+16

删除myObj.test ['key1'];也会起作用。 – MyItchyChin 2009-08-02 19:40:45

+26

所以`删除myObj ['test'] ['key1']`;你可以交换`whatever.x`和`whatever ['x']`只要`x`是一个有效的变量名,所以即使`删除myObj ['test'] .key1`也可以。 – 2009-08-02 20:21:27

82

的选择只要您知道要删除的密钥本身,答案就可以工作,但如果它应该是真正动态的,则需要使用[]符号而不是点符号。

例如:

var keyToDelete = "key1"; 
var myObj = {"test": {"key1": "value", "key2": "value"}} 

//that will not work. 
delete myObj.test.keyToDelete 

相反,你需要使用:

delete myObj.test[keyToDelete]; 

替换用[]符号来表示这些值,你希望被删除之前计算的点号。