为了账号安全,请及时绑定邮箱和手机立即绑定

在嵌套数组中查找空数组并在 Javascript 中删除它们

在嵌套数组中查找空数组并在 Javascript 中删除它们

守着星空守着你 2023-01-06 16:37:15

我有一个嵌套的分层对象数组,看起来像这样


[{

"id": 0,

"name": "E00-E90 Stoffwechselstörungen",

"parentId": null,

"children": [{

    "id": 1,

    "name": "E70-E90 Stoffwechselstörungen",

    "parentId": 0,

    "children": [{

        "id": 2,

        "name": "E70.- Störungen des Stoffwechsels aromatischer Aminosäuren",

        "parentId": 1,

        "children": []

    }, {

        "id": 3,

        "name": "E71.- Störungen des Stoffwechsels verzweigter Aminosäuren und des Fettsäurestoffwechsels",

        "parentId": 1,

        "children": []

    }, {

        "id": 4,

        "name": "E72.- Sonstige Störungen des Aminosäurestoffwechsels",

        "parentId": 1,

        "children": []

    },

    ...

现在我想"children": []从最后一个孩子中删除空数组。


我试过了,reduce但没有任何错误就无法工作。


   var lastElementLength = list.length - 1


   const findItemNested = (arr, itemId, nestingKey) => (

        arr.reduce((a, item) => {

          if (a) return a;

          if (item.id === itemId) return item;

          if (item[nestingKey]) return findItemNested(item[nestingKey], itemId, nestingKey)

        }, null)

    );


    const resEmptyChildren = findItemNested(roots, lastElementLength, "children");

    

    console.log('resEmptyChildren', resEmptyChildren)


查看完整描述

1 回答

?
守着一只汪

TA贡献1621条经验 获得超3个赞

您可以为此使用递归。


var tInput = [{

"id": 0,

"name": "E00-E90 Stoffwechselstörungen",

"parentId": null,

"children": [{

    "id": 1,

    "name": "E70-E90 Stoffwechselstörungen",

    "parentId": 0,

    "children": [{

        "id": 2,

        "name": "E70.- Störungen des Stoffwechsels aromatischer Aminosäuren",

        "parentId": 1,

        "children": []

    }, {

        "id": 3,

        "name": "E71.- Störungen des Stoffwechsels verzweigter Aminosäuren und des Fettsäurestoffwechsels",

        "parentId": 1,

        "children": []

    }, {

        "id": 4,

        "name": "E72.- Sonstige Störungen des Aminosäurestoffwechsels",

        "parentId": 1,

        "children": []

    }]

  }]

}];


(function removeEmptyChildrenProperties(input){

    console.log('Checking id:', input.id);

    if(input.hasOwnProperty('children')){

        if(input.children && input.children.length){

                input.children.forEach(removeEmptyChildrenProperties)

        }

        else{

            console.log('Remove children on id:', input.id);

            delete input.children

        }

    };

    

    return input

}).apply(null, tInput);


console.log(JSON.stringify(tInput));


查看完整回答
反对 回复 2023-01-06
  • 1 回答
  • 0 关注
  • 16 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信