我有这样一组数据,想要递归删除掉所有 children 为空的节点,对于这组数据来说,最后删除完后,会得到空数据。但是我设计的方法好像行不通,请大家帮忙给我个思路,或者说帮忙指出我这段程序中有什么错误的地方,不胜感激:数据data = [
{id: 1, label: '1-1', children:
[
{id: 2, label: '1-2', children: []},
{id: 3, label: '1-3', children: []},
]
},
{id: 4, label: '2-1', children: []},
];尝试的方法function getSelectedNode(nodeData, parent) {
nodeData.forEach(item => { if ('children' in item && item.children.length === 0) { // 使用了lodash的删除方法
lodash.remove(parent.children, o => { return o.id === item.id
})
} else if ('children' in item && item.children.length) {
getSelectedNode(item.children, item);
}
})
}
getSelectedNode(data, data);
1 回答
潇潇雨雨
TA贡献1833条经验 获得超4个赞
既然已经遍历到了,为什么不直接删掉呢?
function getSelectedNode(nodeData, parent) { nodeData.forEach(item => { if ('children' in item && item.children.length === 0) { delete item.children } else if ('children' in item && item.children.length) { getSelectedNode(item.children, item); } }) } getSelectedNode(data, data);
- 1 回答
- 0 关注
- 608 浏览
添加回答
举报
0/150
提交
取消