tree树状结构数据处理

1、树形菜单添加序号(prop),比如 1-1/1-1-1/1-1-2 这样的

const setIndex = (data) => {
            let queue = [...data];
            let loop = 0;
            while (queue.length > 0) {
                loop++
                [...queue].forEach((child, i) => {
                    queue.shift()
                    if (loop == 1) {
                       child.prop = i + 1 + "";
                    }
                    if (child.children && child.children.length > 0) {
                        for (let ci = 0; ci < child.children.length; ci++) {
                            child.children[ci].prop = child.prop + "-" + (ci + 1)
                        }
                        queue.push(...child.children)
                    }
                })
            }
            return data;
        }

2、只要最后一级数据数据

const filterLastTree = (treeList, newTreeList) => {
            treeList.map((item, index) => {
                let tempData: treeItem = {
                    label: item.label,
                    prop: item.prop,
                };
                if (item.children && item.children.length > 0) {
                    newTreeList.push(
                        ...filterLastTree(item.children, []),
                    );
                } else {
                    newTreeList.push(tempData);
                }
            });
            return newTreeList;
        };

调用:filterLastTree = (treeList, [])

3、完整树状结构数据重组

const filterTree = (treeList, newTreeList) => {
            treeList.map((item, index) => {
                let tempData: treeItem = {
                    label: item.label,
                    prop: item.prop,
                    children: [],
                };
                if (item.children && item.children.length > 0) {
                    filterTree(item.children, tempData.children);
                }
                newTreeList.push(tempData);
            });
            return newTreeList;
        };

调用:filterTree (treeList, [])

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值