多维数组转一维数组

二维数组转一维数组

利用ES6扩展运算符

var arr = [1,2,[3,4],5,[6,7]];
console.log([].concat(...arr));
//结果 [1, 2, 3, 4, 5, 6, 7]

利用apply特性,将数组作为参数展开

var arr = [1,2,[3,4],5,[6,7]];
console.log([].concat.apply([],arr));
//结果  
[1, 2, 3, 4, 5, 6, 7]
 
 

多维数组转一维数组

使用ES6新增的flat 和 flatMap方法 【新增时间 2019-9-26】

ES2018 为数组实例新增了flat 、flatMap 方法,用于将二维 或 多为数组 降维 成一维数组

flat 方法默认没有参数时只会降维降一层。  可以指定降维的次数

flat 方法不改变原数组

var arr = [1,[2,[3]]];
console.log(arr.flat());
//结果  [1, 2, Array(1)]

【注】如果想直接降为一维数组flat参数中填写Infinity  

var arr = [1,2,3,[4,5,[6,7]],[8,[9,[10,[11,[12,[13,[14,[15]]]]]]]]];
console.log(arr.flat(Infinity));
//结果   [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]

flatMap()方法,参数是一个回调函数,类似map方法的使用,数组的每个元素执行一次回调函数,然后对返回的数组执行flat()方法,只降一次维

var arr = [1, 2, 3, [4, 5, [6, 7]], [8, [9, [10, [11, [12, [13, [14, [15]]]]]]]]];

let result = arr.flatMap(item=>{
   if(item instanceof Array){
        return [...item]
    } else{
         return item      
   }
})
//结果  [1, 2, 3, 4, 5, Array(2), 8, Array(2)] 【只能降一次维】

 

不使用ES6的方法 

方法一:遍历每一个元素

 1 var arr = [1, 2, 3, [4, 5, [6, 7]], [8, [9, [10, [11, [12, [13, [14, [15]]]]]]]]];
 2 var arr2 = [];
 3 function toArr(arr){
 4   if(arr.forEach){
 5       arr.forEach(item=>{
 6           if(item.forEach){
 7               toArr(item)
 8          }else{
 9             arr2.push(item)
10          }
11        })          
12     } else{
13        arr2.push(arr)    
14     }
    return arr2
15 }
   toArr(arr)
   console.log(arr2);

方法二:reduce方法

转载于:https://www.cnblogs.com/TreeCTJ/p/10259079.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值