多维数组遍历添加新属性,以及获取所有key

// 后台返回菜单json数据,根据组件缺少key 与title,需对数据进行二次加工。

// 菜单结构树转换
export const changeMenuTreeData = (arr) => {
  if (arr) {
    arr.forEach((item, index) => {
      // item.child_type=1 表示含有子菜单; item.child_type=2 表示含有子功能
      if (Number(item.child_type) === 1) {
        // 含有子菜单
        item.key = item.id ? `menu-${item.id}` : `menu-${index}`
        item.title = item.app_name ? item.app_name : item.name
        if (item.children) changeMenuTreeData(item.children)
      } else if (Number(item.child_type) === 2) {
        // 含有子菜单
        item.key = item.id ? `func-${item.id}` : `func-${item.name}-${index}`
        item.title = item.name
        if (item.func) changeMenuTreeData(item.func)
      } else {
        item.key = item.id ? `func-${item.id}` : `func-${item.name}-${index}`
        item.title = item.name
      }
    })
  }
  return arr
}
// 获取菜单结构树所有key,默认下拉树展开
export function getKey(arr, newArr) {
  newArr = newArr || []
  arr.forEach((item, index) => {
    if (item['key']) {
      newArr.push(item['key'])
      if (item['children']) {
        getKey(item['children'], newArr)
      }
    }
  })
  return newArr
}
原文地址:https://www.cnblogs.com/litterjoan/p/12794176.html