如何使用id删除嵌套的JSON对象

时间:2017-09-19 12:26:05

标签: javascript json

在我的应用程序中,我创建了一个基于类似于此的JSON的JavaScript对象:

{
  name: "root",
  id: 112,
  children: [
    {
      name: "child one",
      id: 231,
      children: [
       {name: "grand child 1", id: 334, children: []},
       {name: "grand child 2", id: 784, children: []}
      ]
   },
   {
     name: "child two",
     id: 343,
     children: []
   }
  ]
}

我如何通过他的身份删除任何儿童?请注意,我不知道节点的静态路径,例如id == 334,所以我想知道如何通过知道它的id来删除该节点。

3 个答案:

答案 0 :(得分:0)

检查一下:

var abc = your json object;

//现在根据id

过滤项目
abc = jQuery.grep(
                abc.children, 
                function (item,index) { 
                  return item.id !=  "343"; 
                });
希望它有所帮助。

答案 1 :(得分:0)

function del(obj,id){
  obj.children = obj.children.filter(el => {
    if(el.children) del(el,id);//delete subnodes
    return el.id !== id; //delete this
 });
}

遍历对象的递归方法,可用作:

del(
 { children:[ { id:1 }, { id:2, children:[{id:1}] }] },
1
);

答案 2 :(得分:0)

var delIt = function (obj,id) {

   return obj.children = obj.children.filter(function (child) {
        if(child.children) delIt(child,id);
        return child.id!=id;
    });


}

var x= delIt(Tobj,335);

您可以使用过滤功能来收集与给定ID不相等的项目

相关问题