递归平铺
- 通过递归函数判断条件进行函数自调用
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 arr = [] //声明一个空数组
let num = 1
//平铺函数
function work(data){
// 遍历数组
data.forEach((item)=>{
//给每个项添加num属性
item.num = num++
//把数组项添加到arr数组中
arr.push(item)
//如果数组项有children属性,再次调用函数重复操作,直到数组项都没有children属性为止
if(item.children){
// 数组项有children属性重复调用函数
work(item.children)
// 添加完children中的数组项后删除children属性
//使用 delete 关键字, 可以删除对象的属性或方法,不能删除变量
delete item.children
}
})
}
work(json)
//通过arr数组项的id进行排序
let newArr = arr.sort((a,b)=>{
return a.id-b.id
})
console.log(newArr)