根据表头和vaule进行数据匹配

文章介绍了如何使用JavaScript处理动态生成的表头和嵌套数据结构,通过materdeepList函数将复杂的数据结构转换成易于匹配的格式,适用于数据表格的渲染和关联。
摘要由CSDN通过智能技术生成

表头:

数据:

返回的l列表中需要根据数据进行匹配,外层的指标name 是一开是就已经固定写死的可以直接让的数据进行关联直接数据进入直接进行匹配,

但子级的表头是动态生成的以及子级手动加的,那么和数据中的每一个item中的datalist是对应的,根据他们的的code找到对应的每一条的数据是方式那个下面的然后将数据给入对应匹配的

代码

//处理数据的
const materdeepList = (val: any, header: any) => {
    const list = []
    val.map((i: any) => {
        const obj = {}
        header.map((k: any) => {
            if (!k.kValue) obj[k.prop] = i[k.prop]
        })
        if (i.dataList && i.dataList.length) {
            i.dataList.map((k: any) => {
                header.map((z: any) => {
                    if (z.kValue === z.prop && z.prop === 'fraction') obj.fraction = k[z.prop]
                    if (z.kValue === z.prop && z.prop === 'value') obj.value = k[z.prop]
                })
            })
        }
        if (i.childList && i.childList.length) {
            const children = materdeepList(i.childList)
            if (children.length) obj.children = children
        }
        list.push(obj)
    })
    return list
}


//处理表头树形转平层
const leveling = (val: any) => {
    let result = []
    val.map((i: any) => {
        if (i.children && i.children.length) {
            const res = leveling(i.children)
            if (res.length) result = [...result, ...res]
        } else {
            result.push(i)
        }
    })
    return result
}

// 调用方法
 const { data } = await CollectDataTableListdataId({ assessmentPlanId: props.dataId, dataType: 2 })
    const header = leveling(tableHeader.value)
    tableData.value = materdeepList(data, header)

效果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值