递归
什么是递归:
直接或间接调用函数本身,则该函数称为递归函数
- 递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回
代码
//平铺一个JSON
var arr = [{
id: '1',
name: '课程1',
children: [{
id: '2',
name: '课程2',
},
{
id: '3',
name: '课程3',
children: [{
id: '4',
name: '课程4',
},
{
id: '5',
name: '课程5',
}
]
}
]
},
{
id:'6',
name:'课程6'
},
{
id:'7',
name:'课程7'
},
]
let app = [] // 声明一个空数组
function fn(arr) { // 构建函数 fn
for (var i = 0; i < arr.length; i++) { // 遍历arr (我这里用的for 也可用forEach)
app.push(arr[i]) // 将遍历的数据push进新的数组中
if (arr[i].children) { // 判断遍历的数据中是否有children
fn(arr[i].children) // 有的话 调用自身
}
}
app.forEach(res=>{ // 遍历app
delete res.children // 删除res中的children
})
}
var a = fn(arr)