刚收到一个需求是这样的
标题树状结构数据替换
成下面的结构
代码如下下
//替换配置
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
}
})