递归清除数组每个元素下的children为空的数组

前端工作中经常遇到需要递归处理数据的地方。
例如:当后端接口返回数据,children为空时,使用 Element UI联级选择组件,会展示如下图:
前端需要将children为空的数组删除,此时需要使用递归。

01.png

需求,效果如下图:

02.png

封装函数 clearAllChildren.js

// 递归清除数组每个元素下的children为空的数组
const clearAllChildren = (items, childrenName = 'children') => {
  for (let i = 0; i < items.length; i++) {
    const item = items[i]
    // 当前对象存在children
    if (item && item[childrenName]) {
        // children为空数组时删除
      if (item[childrenName].length === 0) {
        delete item[childrenName]
      } else {
        // 递归当前children数组
        clearAllChildren(item[childrenName], childrenName)
      }
    }
  }
  return items
}

export default clearAllChildren

你可能感兴趣的:(递归清除数组每个元素下的children为空的数组)