操作树形数据方法封装:获取树形数据的某个值、给树形数据每层添加属性

28 篇文章 3 订阅

前言

对于常规数组来说,我们想要获取某一个值,或者给每层添加属性,只需要使用 filetermap 等等的方法,相对来说比较简单。

树形数据不同于常规的数组数据,不能确定其内部包含多少个子节点,即children。所以我们在操作树形数据的时候,不同于常规数据。

其实操作树形数据也很简单,其核心就是 递归

1. 封装获取树形数据的某个值

传参:

  • treeData: 树形数据
  • key:需要匹配的字段名
  • value:需要匹配的字段值
  • field:需要查找的字段
        const findValue = (treeData: any, key: any, value: any, field: any) => {
            let res: any = null;
            const fn = (treeData: any, key: any, value: any, field: any) => {
                if (!treeData?.length) return key
                for (let index = 0; index < treeData.length; index++) {
                    if (treeData[index][key] === value) {
                        res = treeData[index][field]
                        break;
                    }
                    if (treeData[index]?.childrenList?.length) {
                        fn(treeData[index].childrenList, key, value, field)
                    }
                }
            }
            fn(treeData, key, value, field)
            return res
        }

2. 给树形数据每层添加属性

    const addKey = (treeData: any) => {
        return treeData.map((item: any) => ({
            ...item,
            disabled: item.childrenList?.length>0 ? true : false,
            childrenList: item.childrenList?addKey(item.childrenList) : []
        }))
    }
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值