原数据:
[
{
'name': '第一层1',
'pid': '0',
'id': '11',
'children': [
{
'name': '第一层1第二层1',
'pid': '11',
'id': '111',
'children': [
{
'name': '第一层1第二层2第三层1',
'pid': '111',
'id': '1111'
},
{
'name': '第一层1第二层2第三层2',
'pid': '111',
'id': '1112'
}
]
},
{
'name': '第一层1第二层2',
'pid': '11',
'id': '112'
},
{
'name': '第一层1第二层3',
'pid': '11',
'id': '113'
}
]
},
{
'name': '第一层2',
'pid': '0',
'id': '12',
'children': [
{
'name': '第一层2第二层1',
'pid': '12',
'id': '121'
},
{
'name': '第一层2第二层2',
'pid': '12',
'id': '122'
}
]
}
]
方法封装:
function flatten (data, level = 0) {
return data.reduce((arr, { name, pid, id, children = []}) =>
arr.concat([{ name, pid, id, level}], flatten(children, level + 1)), [])
}
处理后的数据:
[
{"name":"第一层1","pid":"0","id":"11","level":0},
{"name":"第一层1第二层1","pid":"11","id":"111","level":1},
{"name":"第一层1第二层1第三层1","pid":"111","id":"1111","level":2},
{"name":"第一层1第二层1第三层2","pid":"111","id":"1112","level":2},
{"name":"第一层1第二层2","pid":"11","id":"112","level":1},
{"name":"第一层1第二层3","pid":"11","id":"113","level":1},
{"name":"第一层2","pid":"0","id":"12","level":0},
{"name":"第一层2第二层1","pid":"12","id":"121","level":1},
{"name":"第一层2第二层2","pid":"12","id":"122","level":1}
]