js数组扁平化
来源:互联网 发布:日本网络电视jitakutv 编辑:程序博客网 时间:2024/05/19 00:41
参考自JavaScript专题之数组扁平化
数组的扁平化,就是将一个嵌套多层的数组 array (嵌套可以是任何层数)转换为只有一层的数组。
var arr = [1, [2, [3, 4]]];//扁平化之后:[1,2,3,4];
- 递归
循环数组元素,如果还是一个数组,就递归调用该方法
function flatten(arr){ var res = []; for(var i=0;i<arr.length;i++){ if(Array.isArray(arr[i])){ res = res.concat(flatten(arr[i])); }else{ res.push(arr[i]); } } return res;}
- reduce
使用reduce来简化代码:
function flatten(arr){ return arr.reduce(function(prev,item){ return prev.concat(Array.isArray(item)?flatten(item):item); },[]);}
- toString
如果数组的元素都是数字,那么我们可以考虑使用 toString 方法,因为:
toString会将数组中的数以逗号形式结合起来。
[1, [2, [3, 4]]].toString() // "1,2,3,4"
toString之后再split转成数组,并将其转换回数字:
function flatten(arr){ return arr.toString().split(',').map(function(item){ return +item; })}
但是这种场景只适用于数组内全部是数字的情况,因为中间是全部转换为字符串了。
- ES6扩展运算符
function flatten(arr){ while(arr.some(item=>Array.isArray(item)){ arr = [].concat(...arr); } return arr;}
由于扩展运算符一次只能展开一层数组:
var arr = [1, [2, [3, 4]]];console.log([].concat(...arr)); // [1, 2, [3, 4]]
因此考虑只要数组中还有数组,就使用扩展运算符展开一次。
阅读全文
0 0
- JS:数组扁平化
- js数组扁平化
- JS扁平化数组代码
- JS数组扁平化、去重、排序
- 用js将数组扁平化
- 多维数组扁平化
- 数组扁平化
- 扁平化多维数组
- PHP和JS扁平化数组代码笔记
- JS数组扁平化处理的几种方法
- PHP扁平化数组代码
- [Javascript Practice] 数组扁平化处理
- 嵌套的数组进行扁平化处理
- 数组扁平化和去重
- 多维数组转成一维数组(数组扁平化)
- 扁平化
- JavaScript对嵌套数组做扁平化处理
- Math.prototype.concat详解及二维数组扁平化方法
- 2017.8.12 总结
- SharePoint2013 App开发部署遇到的一系列问题
- 线段树,求和,最值,数据更新
- 8.12
- 自顶向下设计, 自底向上的执行, 软件开发方法
- js数组扁平化
- 2017百度之星初赛(A) 度度熊的01世界(BFS/DFS)
- Day 14
- Refletion2017.8.12
- Kick Ass Biu
- javascript 继承
- Hdu 6113
- 伪代码的写法
- java IO笔记(PipedInputStream/PipedOutputStream)