当一个数组中包含 类似child children 等字段,并且这个字段也是一个数组其内部成员的结构和父级一致
需要给这个数组整体所有的数据做映射时 所使用的工具函数
//data:数据源
//childName:囊括子集的数组
//func:映射函数
const deepMapTree = (data,childName,func) => {
return data.map((ele) => {
const newEle = func(ele)
if([childName] in ele){
newEle[childName] = deepMapTree(ele[childName],childName,func)
}
return newEle
})
}
//列子如下
//如果想把mockTree 这个数据中所有pId为root的值更换成 0 则可以这样实现
const mockTree = [
nodeName:'1',
nodeId:'1',
level:1,
pId:'root',
children:[
{
nodeName:'1-1',
nodeId:'1-1',
level:2,
pId:'1',
}
],
nodeName:'2',
nodeId:'2',
level:1,
pId:'root',
]
const mapMockTree = deepMapTree(mockTree,'children',(ele) => {
return{
...ele,
pId: ele.pId === 'root' ? '0' : ele.pId
}
})