遍历树结构,当节点的children为空时,删除children

需求

如果children为空数组,则删除children

数据结构

let arr2=[{
          label: '一级 1',
          children: [{
            label: '二级 1-1',
            children: []
          }]
        }, {
          label: '一级 2',
          children: [{
            label: '二级 2-1',
            children: [{
              label: '三级 2-1-1'
            }]
          }, {
            label: '二级 2-2',
            children: [{
              label: '三级 2-2-1'
            }]
          }]
        }, {
          label: '一级 3',
          children: []
        }]

函数

 // children为[],则删除children键
  function deleteChildren(arr) {
      let childs = arr
      for (let i = childs.length; i--; i > 0) {
        if (childs[i].children) {
          if (childs[i].children.length) {
            this.deleteChildren(childs[i].children)
          } else {
            delete childs[i].children
          }
        }
      }
      return arr
    }

调用

let arrNew = deleteChildren(arr2)
console.log(arrNew)

返回结果

可看到 '二级 1-1' 和 '一级 3' 中的children已被删除


image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。