javaScript中利用递归函数实现扁平化数组

javaScript中利用递归函数实现扁平化数组

什么是数组扁平化

就是将一个多维数组转为单维数组

//需要扁平化的数组
var arr = [[1,2,3,[true,false,[3,4],5],6],function a (){}]
//封装函数
 function flattening(arr) {
 //创建空数组接收数组
         var list = []
         //判断传进来的arr是否为数组
         if(arr instanceof Array){
         	//如果是则便利这个数组
             for (var i = 0 ;i<arr.length;i++){
                 list = list.concat(flattening(arr[i]))
             }
         }else {
         //如果不是则直接放进list
             list.push(arr)
         }
         //返回list
         return list
     }
     /*
    * [1]
    * [true,false]
    *   [true,false,3,4]
    *   [true,false,3,4,5]
    * [function a(){}]
    * */


    /*
    * 第一层函数
    * 传进去 [1,2,3,[true,false,[3,4],5],6,function a (){}]
    * list = []
    * arr是数组所以开始循环
    * i = 0
    * arr[i] = 1
    * */



    /*
    * 1传参进来
    * list = []
    * 1不是数组则list.push(1)
    * list = [1]
    * 然后返回list
    * 第一层函数的list.concat([1])
    * 如果要进行 concat() 操作的参数是数组,那么添加的是数组中的元素,而不是数组。
    * 所以第一层函数的list = [1] 而不是 [[1]]
    * */


    /*
    * 继续循环   则第一层 i = 1
    * 则传进去的参数是[true,false,[3,4]]
    * 这次是数组
    * 所以开启第三层函数 true 和 flase 参考第一层函数
    * 传参[3,4]
    * 返回第二层list [3, 4]
    * 则第二层的list = [true,false,3,4]
    * 在把第二层的list返回第一层则第一层的list = [1,true,false,3,4]
    * */
    /*
    
    
 * [1]
 * [true,false]
 *   [true,false,3,4]
 *   [true,false,3,4,5]
 * [function a(){}]
 * */
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值