猿问

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

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


[{

"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)


守着星空守着你
浏览 131回答 1
1回答

守着一只汪

您可以为此使用递归。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));
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答