博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js多维数组扁平化
阅读量:5317 次
发布时间:2019-06-14

本文共 1140 字,大约阅读时间需要 3 分钟。

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

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

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

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

结果如下:

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

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

 

2. (...

[].concat(...arr)

 

3. (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

你可能感兴趣的文章
在线可视化快速开发表单-第三篇控件属性设置
查看>>
WIS800C TCP Client 非透传模式连接远程服务器使用方法(转)
查看>>
GPRS以TCP上传数据到服务器OK,但收不到服务器下发的数据
查看>>
随笔分类 - Bootloader(转)
查看>>
海思uboot启动流程详细分析(转)
查看>>
基于 FPGA 的图像边缘检测(转)
查看>>
为什么说基于TCP的移动端IM仍然需要心跳保活?(转)
查看>>
如何编写Linux设备驱动程序(转)
查看>>
TCP连接探测中的Keepalive和心跳包(转)
查看>>
c语言字符串分割函数(转)
查看>>
移动端IM系统的协议选型:UDP还是TCP?(转)
查看>>
高通电池曲线(转)
查看>>
MWC飞控增加声纳定高的方法(转)
查看>>
Gsensor驱动调试(转)
查看>>
Arduino遥控套装(转)
查看>>
2.4G天线在PCB板上的设计
查看>>
非常实用: 2.4G天线设计指南(赛普拉斯工程师力作)
查看>>
UDP包的大小与MTU
查看>>
linux中keepalived实现nginx高可用配置
查看>>
BZOJ4808马——二分图最大独立集
查看>>