递归小案例
将一组深层次数据,每项数据单独提取出来,添加到一个新的数组当中去
- 例:
const json = [
{
id: 1,
title: "课程1",
children: [
{ id: 4, title: "课程1-1" },
{
id: 5,
title: "课程1-2",
children: [
{ id: 6, title: "课程1-2-1" },
{ id: 7, title: "课程1-2-2" },
],
},
],
},
{ id: 2, title: "课程2" },
{ id: 3, title: "课程3" },
];
- 操作过程
// 创建一个空的数组,来接收平铺后的数据
let json2 = []
// 递归首先要有一个函数,创建一个函数,接收一个形参
function fn(json){
// 接收的数据进行循环
json.forEach(item => {
// 将循环后的数据全部添加到新数组中
json2.push(item)
// 判断循环除的数据中,有哪些有children属性
if(item.children){
// 自我调用函数,给函数传递一个深层数据,然后会把上面的逻辑重新执行一遍
fn(item.children)
}
});
// 循环结束后,循环遍历递归储存的数据,
json2.forEach(i=>{
// 删除无用属性
delete i.children
})
}
// 将原数组传递过去
fn(json)