2014-01-08 136 views
2

一個快速的問題,我想更新使用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

回答

1

你可以存儲你的對象是這樣的:

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