js多维数组扁平化

数组扁平化,就是将多维数组碾平为一维数组,方便使用。

一:例如,一个二维数组 var arr = ['a', ['b', 2], ['c', 3, 'x']],将其扁平化:

1.  通过 apply 借用数组的 concat 方法:

[].concat.apply([], arr);

结果如下:

jQuery 中的 map 方法就用到了这个技巧。

但如果直接调用 concat 方法,[].concat(arr),就没有扁平化效果。

 

2扩展运算符...

[].concat(...arr)

 

3. reduce(ES5新增的数组方法):

[['a'], ['b', 2], ['c', 3, 'x']].reduce((a, b) => a.concat(b), []);

 

二:对于三维及以上的数组:

1. 数组每一项都是简单类型,如数字:

var arr = [[1], [[2, 3], [4]], 5, 6];
arr.toString().split(',').map(item => +item);

 

2. 递归:

 1 var flatten = function(arr) {
 2     var isArray = function(arr) {
 3             return Array.isArray(arr) || Object.prototype.toString.call(arr) === '[object Array]';
 4         },
 5         ret = [],
 6         item;
 7 
 8     if (!isArray(arr)) {
 9         return;
10     }
11 
12     for (var i = 0; i < arr.length; i++) {
13         item = arr[i];
14         if (isArray(item)) {
15             ret = ret.concat(flatten(item));
16         } else {
17             ret.push(item);
18         }
19     }
20 
21     return ret;
22 };
23 
24 flatten(  [ 'a', [[[['b', 2]]]], ['c', [3, 'x']] ]  );

该方法对任意维数组都有效。

 

三:flat (ES6方法)

flat(Infinity) 可将任意维数组转成一维数组

转载于:https://www.cnblogs.com/caihg/p/6519422.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值