【问题标题】:Remove element from multi nested Json array object in angularjs从angularjs中的多嵌套Json数组对象中删除元素
【发布时间】:2016-07-05 07:02:31
【问题描述】:

我想从嵌套的 json 数组中删除特定元素。 下面的 json 对象的根节点为 EE,带有嵌套的子节点和包。我想删除节点id = 7。有可能这样做吗?

$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 
       }]
};

【问题讨论】:

    标签: angularjs json


    【解决方案1】:

    您可以使用 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

    【讨论】:

    • 感谢您的回复。基本上,这就像在前端有子节点和包作为不同图标的树结构。我想通过外部按钮根据选定的节点 ID 动态删除。
    • 应该不是问题,创建一个以 id 作为参数的函数,然后您可以将其传递给 lodash 以过滤掉所选项目。通过 Angular 中的绑定,您的 UI 将自动更新。 Lodash 支持过滤子集合,所以它应该是一个完美的选择。这是我的意思的一个例子:stackoverflow.com/questions/17096988/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-18
    • 2022-07-19
    • 1970-01-01
    • 1970-01-01
    • 2021-12-11
    • 2019-01-25
    相关资源
    最近更新 更多