2016-07-05 7 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

関連する問題