遇到多个嵌套的数组,将嵌套的数组中的元素全部展开到最外层的数组中,可以使用递归来解决这个问题。
-
什么是递归?
递归简单的理解就是函数里面嵌套着当前函数的调用,一直达到某个条件才会停止。就像小时候听过的故事从前有座山,山里有座庙,庙里有个和尚,和尚在讲故事,从前有座山,山里有座庙,庙里有个和尚,和尚在讲故事,从前有座山......一直循环,只不过递归函数是有停止的条件。
function get(a) {
a += 1;
if (a > 50) {
return false;
} else {
get(a)
console.log(a)
}
}
get(20)//50-21
-
将嵌套数组展平
思路就是先遍历数组,然后判断数组的每个元素是否是数组,如果是数组,就再次调用当前函数,然后将当前的数组元素当做函数参数传入,如果不是数组元素就直接push
到空数组中(不考虑数组元素是对象的情况)。
let arr=[1,2,[3,4,5,[6,7,[8,9,[10]]]]]
var arr1=[];
function recursion(a,b){
a.forEach(item => {
if(typeof item=="object"&&item&&item.length>=0){
recursion(item,b)
}else{
b.push(item)
}
});
return b
}
let res=recursion(arr,arr1)
console.log(res)//[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]