2015-12-15 77 views
0

我有一個對象,看起來像這樣當我做了stringify()刪除陣列中的特定對象內的JavaScript屬性

{"key-1":{"inner_key_obj-1":{"A":"1", "AA":"11", "AAA":"111"}, "inner_key_obj-2":{"B":"2", "BB":"22", "BBB":"222"}, "inner_key_obj-3":{"C":"3", "CC":"33", "CCC":"333"}}, "key-2" : "not-an-object-property" } 

我想搜索並刪除他們的關鍵inner_key_obj-2從而使對象變爲:

{"key-1":{"inner_key_obj-1":{"A":"1", "AA":"11", "AAA":"111"}, "inner_key_obj-3":{"C":"3", "CC":"33", "CCC":"333"}}, "key-2" : "not-an-object-property" } 

我知道我可以使用delete以去除對象的關鍵和它的價值,但我怎麼循環通過這個到那裏?

我做了一些基本的測試,像這樣的:

for (var key in object) 
     { 
      if (object.hasOwnProperty(key)) 
      {     
       //Now, object[key] is the current value 
       if (object[key] == null) 
       { 
        delete object[type]; 
       } 
      } 
     } 

...但無濟於事。有人可以解釋如何循環通過這個?

+1

爲什麼你會需要遍歷?你是否需要僅在'key1'中或在較高級別的任何對象中用鍵'inner_key_obj-2'刪除子對象? – jcaron

+0

@jcaron我正在尋找刪除該特定位置的密鑰。基本上,此對象(鍵-1)中的第一個屬性是一個對象數組。我需要從該數組中移除一個對象。 – KickingLettuce

+0

屬性'key-1'下的對象是否始終保存在根對象上?或者你需要首先搜索保存'inner_key_obj-2'的對象? – MinusFour

回答

2

delete object["key-1"]["inner_key_obj-2"]; 

你想要做什麼?

+0

爲什麼是的,是的,它的確如此!我真的推翻了那個。我習慣於在php中做這些事情,並且腦子裏想着一個完全不同的觀點。謝謝!將標記正確。 – KickingLettuce

0

我只是做一個新的對象

var newObject = {}; 
for(key in object['key-1']){ 
    if(key != 'inner_key_obj-2'){ 
     newObject['key-1'][key] = object[key-1][key]; 
    } 
} 

或者

delete object["key-1"]["inner_key_obj-2"];