2015-12-15 78 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"];