代码
/**
* 多维数组扁平化
* @param {Array<T>} deepArr 多维数组
* @param {Array<string>} hideKeys 扁平后不要的key值
* @returns Array<T>
*/
function toFlatness(deepArr = [], hideKeys = []) {
const reg = new RegExp(hideKeys.join('|'))
const list = []
function format(arr = deepArr) {
arr.forEach(item => {
const currentItem = { ...item } // 如果有数据代理 可以用深拷贝代替
if (hideKeys && hideKeys.length) {
Object.keys(item).forEach(k => {
if (reg.test(k)) {
delete currentItem[k]
}
})
}
list.push(currentItem)
if (item.children) {
format(item.children)
}
})
return list
}
format()
return list
}
适用数据
[{
"value": "一级",
"children": [
{
"value": "二级",
"children": []
},
{
"value": "二级-1",
"children": []
},
{
"value": "二级-2",
"children": []
},
{
"value": "二级-3",
"children": [
{
"value": "三级",
"children": [
{
"value": "四级",
"children": [
{
"value": "五级",
"children": [
{
"value": "六级",
"children": []
}
]
}
]
}
]
}
]
}
]
}]
例子
// arr 为上方举例(适用数据)
const result = toFlatness(arr, ['children'])
console.log(JSON.stringify(result, null, 2))
/*
[
{
"value": "一级"
},
{
"value": "二级"
},
{
"value": "二级-1"
},
{
"value": "二级-2"
},
{
"value": "二级-3"
},
{
"value": "三级"
},
{
"value": "四级"
},
{
"value": "五级"
},
{
"value": "六级"
}
]
*/