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

树形结构数据如何删除空的子级节点?

树形结构数据如何删除空的子级节点?

白板的微信 2018-12-16 08:53:43
我有这样一组数据,想要递归删除掉所有 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贡献1982条经验 获得超2个赞

既然已经遍历到了,为什么不直接删掉呢?

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


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

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号