前端数据树状列表展示

实现柱状列表展示的话,主要是对数据进行树状处理。

原数据长这样:

[
    {
        "name": "aa.bb.cc",
        "age": "12"
    },
    {
        "name": "aa.dd",
        "age": "18"
    },
    {
        "name": "cc",
        "age": "22"
    }
]

这里我们根据 . 进行分割文件夹。如name为 aa.bb 的数据,就会出现一个渲染在文件夹aa底下的数据,数据名叫bb。

处理数据的方法:

 function searchChildren(aa, bb) {
    for (let i = 0, len = aa.length; i < len; i++) {
      if (aa[i].name == bb) return aa[i].children;
      continue;
    }
    aa.push({
      name: bb,
      children: [],
    });
    return aa[aa.length - 1].children;
  }


  let ans = list.reduce((acc, curr) => {
    let dir = curr.name.split(".");
    let target = acc;
    for (let i = 0, len = dir.length; i < len - 1; i++) {
      target = searchChildren(target, dir[i]);
    }
    console.log("dir[dir.length - 1]", dir[dir.length - 1]);

    target.push({
      name: dir[dir.length - 1],
      ...curr,
    });
    return acc;
  }, []);

  console.log(ans);

处理后的数据

[
    {
        "name": "aa",
        "children": [
            {
                "name": "bb",
                "children": [
                    {
                        "name": "cc",
                        "age": "12"
                    }
                ]
            },
            {
                "name": "dd",
                "age": "18"
            }
        ]
    },
    {
        "name": "cc",
        "age": "22"
    }
]

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值