更新JSON对象

问题描述:

一个快速的问题,我想更新使用javascript不重复的JSON。更新JSON对象

{ "parent":{ 
    "id":"1", 
    "status":"Bad", 
    "children":[ 
    { 
     "id":"2", 
     "status":"Good", 
     "children":[ 
      { 
       "id":"3", 
       "status":"Bad", 
       "children":[ 

       ] 
      }, 
      { 
       "id":"4", 
       "status":"Bad", 
       "children":[ 

       ] 
      } 
     ] 
    }, 
    { 
     "id":"4", 
     "status":"Bad", 
     "children":[ 
      { 
       "id":"3", 
       "status":"Bad", 
       "children":[ 

       ] 
      }, 
      { 
       "id":"4", 
       "status":"Bad", 
       "children":[ 

       ] 
      } 
     ] 
    } 
    ] 
}} 

在该树结构中,ID将常见的许多对象。如果我想要更新所有ID为“3”的状态,那么我现在继续进行迭代以查找相应的ID并更新状态。这是非常耗时的,有没有一种方法可以使用ID更新状态而无需迭代。

我发现一个js叫“掐”,但它是没有用的,它在内部做同样的迭代。那么有没有一种方法可以在不进行迭代的情况下更新状态。

我欢迎最好的遍历想法也。

+0

我不知道这是可能没有某种形式的迭代。 –

+0

感谢您的回复kevin Bowersox,是否有任何最佳的遍历想法来更新json,如我所料。 – Harry

+0

user2864740,我有你的想法,你要我转换,像地图,然后你要我穿越,有没有什么具体的例子。请让我知道。 – Harry

你可以存储你的对象是这样的:

objs = [ 
{"id":"1","status":"Bad",children:[]}, 
{"id":"2","status":"Good",children:[]}, 
{"id":"3","status":"Bad",children:[]}, 
{"id":"4","status":"Bad",children:[]}] 

objs[0].children=[objs[1],objs[2]] 

objs.map(function(t){t.status="Updated"}) 

这样通过链接JS手柄PARAMS,你可以用列表做任何 - 的变化也将出现在JSON OBJ。

+0

感谢kirill,截至目前的映射不是我的选择......我使用深度搜索做了最好的遍历迭代... – Harry