Js递归数组展平

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

  • 什么是递归?

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

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]
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 记得小时候经常讲的一个故事:从前有座山,山上有座庙,庙里有一个老和尚和一个小和尚,一天,老和尚给小和尚讲了一个故事...
    IT可乐阅读 499评论 0 3
  • 一、数组定义 array() 1、索引数组 在一个变量中,存储一个或多个值。数组中的每一个元素都有一个访问ID,根...
    竹与豆阅读 548评论 0 0
  •   脑抽的我上个文章烂尾,又开新坑,,,,我只能对自己前面开的烂坑说一句:青山不改,绿水长流,我们有缘再见!  这...
    大王叫我来巡老和山阅读 1,443评论 0 6
  • 递归技术 需求:扫描D:\test所有子文件夹及子子文件夹下的.jpg文件。我们如果用循环来做这件事,我们不知道循...
    Villain丶Cc阅读 2,706评论 3 22
  • 定义: 在数学与计算机科学中,是指在函数的定义中使用函数自身的方法。递归一词还较常用于描述以自相似方法重复事物的过...
    孙亖阅读 725评论 0 2