2016-07-05 73 views
0

我想從嵌套的json數組中刪除特定元素。 以下json對象的根節點爲EE,嵌套子節點爲&包。我想刪除節點id = 7。有可能這樣做嗎?從angularjs中的多個嵌套Json數組對象中刪除元素

$scope.data = { 
     "id": 1, "parentNodeId": null, 
     "nodeName": "EE", "magCode": "EE", 
     "childNodes": [{ 
       "id": 2, 
       "parentNodeId": 1, 
       "nodeName": "Child 1", 
       "magCode": "EE", 
       "childNodes": [], 
       "packages": [] 
      }, 
      { 
       "id": 4, 
       "parentNodeId": 1, 
       "nodeName": "Child 2", 
       "magCode": "EE", 
       "childNodes": [{ 
        "id": 5, 
        "parentNodeId": 4, 
        "nodeName": "Child 21", 
        "magCode": "EE", 
        "childNodes": [], 
        "packages": [] }], 
       "packages": [{ 
        "id": 6, 
        "parentNodeId": 4, 
        "nodeName": "Child Package 2", 
        "magCode": "EE", 
        "childNodes": null, 
        "packages": null 
        }, 
        { 
        "id": 7, 
        "parentNodeId": 4, 
        "nodeName": "Child Package 3", 
        "magCode": "EE", 
        "childNodes": null, 
        "packages": null 
        } 
       ] 
     }], 
     "packages": [{ 
      "id": 8, 
      "parentNodeId": 1, 
      "nodeName": "test", 
      "magCode": "EE", 
      "childNodes": null, 
      "packages": null 
     }] 
}; 

回答

0

你可以使用一個庫如lodash刪除不需要的項目:

var array = [1, 2, 3, 4]; 
var evens = _.remove(array, function(n) { 
    return n % 2 == 0; 
}); 

console.log(array); 
// → [1, 3] 

console.log(evens); 
// → [2, 4] 

lodash remove documentation

+0

感謝您的答覆。基本上,這就像樹結構一樣,在前端有不同的圖標作爲子節點和包。我想通過外部按鈕根據選定的節點ID動態刪除。 – Prabakar

+0

不應該是一個問題,創建一個函數,將該ID作爲參數,然後您可以將它傳遞給lodash以篩選出所選項目。通過在Angular中綁定,您的UI將自動更新。 Lodash支持子集合的過濾,因此它應該是一個完美契合。這裏是我的意思的一個例子:http://stackoverflow.com/questions/17096988/lodash-how-do-i-use-filter-when-i-have-nested-object – Turkster