例如这样的数组:每一级下面有childer也可能没有
const exampleArr = [
{
id:'01',
title:'菜单一',
childer:[
{
id:'010',
title:'二级菜单,
childer:[
{
id:'0100',
title:'三级菜单1,
},
{
id:'0101',
title:'三级菜单2,
},
]
}
]
},
{
id:'02',
title:'菜单二',
},
{
id:'03',
title:'菜单三',
childer:[
{
id:'0100',
title:'三级菜单,
}
]
},
]
1.拉平数组对象的方法封装:
const flatMethod = (arr, key) => {
return [].concat(
...arr.map((item) => {
return [].concat(item, ...flatArrMethod(item[key] || [], key));
})
);
};
获取拉平后的数组:
const getFlatExampleArr = flatMethod(exampleArr,'childer')
2.递归改变嵌套数组对象的key值。这里childer是写死的,也可以传进来。
循环时可以改变每一层的对象
const changeArrKeyMethod = (sourceArr) => {
for (let i = 0; i < sourceArr.length; i++) { // for循环传入的数组
sourceArr[i] = { ...findItem, title: sourceArr[i].name, routes: sourceArr[i].subMenuNode }; // 每一项在这一步做改变
// 如果这一项下面还有数组再循环一次
if (sourceArr[i].childer && sourceArr[i].childer.length > 0) {
changeArrKeyMethod(sourceArr[i].childer);
}
}
};
获取改变后的数组:
changeArrKeyMethod(exampleArr)
console.log(exampleArr)