js Tree属性名及值的修改

刚收到一个需求是这样的

标题树状结构数据替换

在这里插入图片描述

成下面的结构

在这里插入图片描述

代码如下下

  //替换配置
        let replaceConfig = {
            provinceName: 'value',
            mallCityList: 'children',
            mallAreaList: 'children',
            areaName: 'value',
            cityName: 'value',
        }

        const listNew = [{
            provinceName: '安徽省',
            mallCityList: [{
                cityName: '芜湖市',
                mallAreaList: [{
                        areaName: '三山区',
                    },
                    {
                        areaName: '镜湖区'
                    }
                ]
            }]
        }]
        
        let replaceFn = function replaceFn(listNew, replaceConfig, setOtherField) {
            return (function a(listNew) {
                return listNew.map(item => {
                    let newItem = {}
                    Object.entries(item).forEach(([key, value]) => {
                        if (replaceConfig[key]) {
                            if (value instanceof Array) {
                                let data = a(value)
                                newItem[replaceConfig[key]] = data
                            } else {
                                //函数回调设置其他属性
                                if (setOtherField) {
                                    let _item = setOtherField(key, value)
                                    if (_item) {
                                        Object.assign(newItem, _item)
                                    }
                                }
                                newItem[replaceConfig[key]] = value
                            }
                        } else {
                            newItem[key] = value
                        }
                    })
                    return newItem
                })
            })(listNew)
        }
        
        let result = replaceFn(listNew, replaceConfig, (key, value) => {
            if (key == 'provinceName') return {
                label: value
            }
            if (key == 'cityName') return {
                label: value
            }
            if (key == 'areaName') return {
                label: value
            }
        })
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值