js - tree数据拍平

1,263 阅读1分钟

tree数据拍平

原数据如下

结果

实现代码:

var treeFlat = (data, childrenKey, map) => {
    var res = []
    var loop = (arr) => {
        return arr.map(e => {
			let item = map(e)
			let children = e[childrenKey]
                ? loop(e[childrenKey]).flat().flat()
                : []
            e[childrenKey] 
				? res.push(item, ...children) 
				: res.push(item)
            return e[childrenKey]
                ? [item, ...children]
                : [item]
        })
    }
    loop(data)
    return res
}

USE

treeFlat(temp1, 'knowledgeTrees', (e) => ({name: e.name, uid: e.uid}))

--END--