const flat = function (arr, deep = 1) {
// 声明一个新数组
let result = []
arr.forEach(item => {
if (Array.isArray(item) && deep > 0) {
// 层级递减
dep--
// 使用concat链接数组
result = result.concat(flat(item, deep))
} else {
result.push(item)
}
})
return result
}
原理就是,先在内部生成一个新数组,遍历原来的数组
当原数组内 存在数组并且层级deep大于等于1时进行递归, 如果不满足这个条件就可以直接push数据到新数组去
递归同时要先把层级减少, 然后通过 concat 链接递归出来的数组
最终返回这个数组就可以了
作者:Ali2333
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。