数组reduce实现树形数据 转扁平化数组

上代码:

const treeData = [
  {
    id: 1,
    name: '阿里巴巴',
    children: [
      {
        id: 11,
        parentId: 1,
        name: '蚂蚁金服',
        children: [
          { id: 111, parentId: 11, name: '行政处' },
          { id: 112, parentId: 11, name: '财务处' }
        ]
      },
      {
        id: 12,
        parentId: 1,
        name: '哈啰科技',
        children: [{ id: 111, parentId: 11, name: '人事处' }]
      }
    ]
  },
  {
    id: 2,
    name: '腾讯科技',
    children: [
      {
        id: 21,
        parentId: 2,
        name: '天美游戏',
        children: [{ id: 211, parentId: 21, name: '研发部' }]
      }
    ]
  }
]

const result = treeData.reduce(function (prev, curr) {
  prev.push({
    id: curr.id,
    name: curr.name,
    parentId: curr.parentId
  })
  curr.children &&
    curr.children.forEach((item) => {
      arguments.callee(prev, item)
    })
  return prev
}, [])

console.log(result)

// [
//   { id: 1, name: '阿里巴巴', parentId: undefined },
//   { id: 11, name: '蚂蚁金服', parentId: 1 },
//   { id: 111, name: '行政处', parentId: 11 },
//   { id: 112, name: '财务处', parentId: 11 },
//   { id: 12, name: '哈啰科技', parentId: 1 },
//   { id: 111, name: '人事处', parentId: 11 },
//   { id: 2, name: '腾讯科技', parentId: undefined },
//   { id: 21, name: '天美游戏', parentId: 2 },
//   { id: 211, name: '研发部', parentId: 21 }
// ]

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值