2020/12/15 数组扁平化

定义什么是数组扁平化?
答:将嵌套多层的数组 转化为一层数组 ,叫数组扁平化

方法一: flatten用法:可以理解为将嵌套数组的维数减少,嵌套数组将递归为一维数组,不然只减少嵌套数组一个级别的维数
最开始是循环数组 如果还是数组的话则进行递归处理
初始化扁平化的数组

         function flatten(arr) {
         // 最开始是循环数组 如果还是数组进行递归处理
         // 初始化扁平化的数组
         var res =[];
         // 遍历  需要扁平化的数组  arr
         for (var i=0,len = arr.length;i<len;i++){
             // 如果arr[i] 是数组;进行递归的处理
             if(Array.isArray(arr[i])){
                 // bug 返回是最内层的数组;
                 // res = flatten(arr[i])
                 // 解决 将现在 res 与扁平化的数组进行合并处理
                 res =res.concat(flatten(arr[i]))
             }else{
                 //  如果不是数组 直接添xin加到 res 上
                 res.push(arr[i])
             }
         }
           return res;
        }
         var res =flatten(arr)
         console.log(res);

方法二:这种方法有局限性 看下面的列子

        // 有局限性 [1,['2','3',2],'2']
        var res = [1,['54','545',5],'954']
         function flatten(arr){
             var result = []
             result = arr.toString().split(',').map(function(item){
                 return +item;
             })
             return result;
         }
           console.log(res)

方法三:
一般对数组处理,最终都是为了返回一个值 reduce

         function flatten(arr){
            var res =arr.reduce(function(pre,item){
                // return per.concat(item)
                return pre.concat(Array.isArray(item)? flatten(item):item)
            },[])
            return res
        }
        var res = flatten([1,2,3,[1,2]])
        console.log(res);

方法四:(tostring)
如果arr数组中有空数组,不使用此方法,用下面的方法;同时得到数组的值是字符串,不是数字

       var arr=[1,2,3,4,[5,6.7,[45]]];
        var newArr=arr.toString().split(',')
        console.log(arr,newArr)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值