美文网首页
Js递归数组展平

Js递归数组展平

作者: 光头小青蛙 | 来源:发表于2019-07-23 16:36 被阅读0次

遇到多个嵌套的数组,将嵌套的数组中的元素全部展开到最外层的数组中,可以使用递归来解决这个问题。

  • 什么是递归?

递归简单的理解就是函数里面嵌套着当前函数的调用,一直达到某个条件才会停止。就像小时候听过的故事从前有座山,山里有座庙,庙里有个和尚,和尚在讲故事,从前有座山,山里有座庙,庙里有个和尚,和尚在讲故事,从前有座山......一直循环,只不过递归函数是有停止的条件。

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]

相关文章

网友评论

      本文标题:Js递归数组展平

      本文链接:https://www.haomeiwen.com/subject/lmlalctx.html