js多维数组映射

73 阅读1分钟

当一个数组中包含 类似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
    }
})