js对象数组拍平(扁平化)

实现目标:

  • 将多层嵌套children的对象数组拍平,并存入父元素的id(可替换)。

实现方法:

  • 1.储存第一层数组对象

  • 2.查看数组对象内是否有children,若有children则递归,并存入父元素的key。

测试数据:

  let Data = [
        {
          id: 1,
          content: '是否是双方都',
          list: [
            {
              id: 2,
              content: 'sof决定受理咖啡机离开',
              list: [
                {
                  id: 3,
                  content: '水电费',
                  list: [],
                },
              ],
            },
          ],
        },
        {
          id: 4,
          content: 'sof决定受理咖啡机离开',
          list: [
            {
              id: 5,
              content: '测试5',
              list: [],
            },
          ],
        },
        {
          id: 6,
          content: '测试6',
          list: [],
        },
      ];

js代码:

  const flatData = (data, parentId = undefined) => {
        return data.reduce((prev, curr) => {
          if (parentId != undefined) {
            Object.assign(curr, {
              parentId: parentId,
            });
          }
          prev.push(curr);
          if (curr.list.length > 0) {
            prev.push(...flatData(curr.list, curr.id));
          }
          return prev;
        }, []);
      };

let flated = flatData(Data);
console.log(flated);
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值