多维数组降维成一维数组

reduce()

var arr1 = [[0, 1], [2, 3], [4, 5]];
var arr2 = arr1.reduce(function (a, b) { return a.concat(b)} );
// arr2 [0, 1, 2, 3, 4, 5]

回调

优点: 多维数组也可以

比如:var arr = [[1,2],3,[[[4], 5]]]

var arr1 = [[0, 1], [2, 3], [4, 5]];
function flatten(arr) { return [].concat( ...arr.map(x => Array.isArray(x) ? flatten(x) : x) ) }
var arr2 = flatten(arr1); // arr2 [0, 1, 2, 3, 4, 5]

flat()

利用 ES 的最新语法,Array.prototype.flat()。缺点是,有兼容性问题(例360浏览器不支持, Chrome支持)。优点是非常简单。

mdn 上是这么描述的:flat() 方法会递归到指定深度将所有子数组连接,并返回一个新数组。

语法:var newArray = arr.flat(depth),参数说明:depth,可选,指定嵌套数组中的结构深度,默认值为1。

var arr1 = [1, 2, [3, 4]];
arr1.flat(); // [1, 2, 3, 4] var arr2 = [1, 2, [3, 4, [5, 6]]];
arr2.flat(); // [1, 2, 3, 4, [5, 6]] var arr3 = [1, 2, [3, 4, [5, 6]]];
arr3.flat(2); // [1, 2, 3, 4, 5, 6] //Infinity展开所有嵌套数组
arr3.flat(Infinity); // [1, 2, 3, 4, 5, 6] var arr4 = [1, 2, , 4, 5];
arr4.flat(); // [1, 2, 4, 5]

最新文章

  1. CentOS 6.5系统安装配置LAMP(Apache+PHP5+MySQL)服务器环境
  2. Snapshot Volume 操作 - 每天5分钟玩转 OpenStack(58)
  3. cobbler安装、部署、测试
  4. 9.4用WebApi去连接外部认证服务
  5. (顺序表的应用5.4.3)POJ 1012(约瑟夫环问题——保证前k个出队元素为后k个元素)
  6. 作业七:团队项目——Alpha版本冲刺阶段
  7. 证书与keytool
  8. jquery------提供灵活的方法参数
  9. centos7重启rsyslog服务|centos7重启syslog服务
  10. “PEDIY CrackMe 2007” 下载地址
  11. Sharepoint 问题集锦 - 外部列表(external list) - 读取当前用户上下文或用户名作为筛选参数
  12. js中this的四种使用方法
  13. 【百度地图API】——如何让标注自动呈现在最佳视野内
  14. 设计模式的征途—11.外观(Facade)模式
  15. [array] leetcode - 39. Combination Sum - Medium
  16. 一套强大的vim配置文件+详细注释
  17. Kindle Windows版本 中文字体修改工具
  18. 死磕NodeJs之REPL与For Server,我的艰辛的旅程(一)
  19. java继承-super的用法
  20. COUNT分组条件去重的sql统计语句示例(mysql)

热门文章

  1. 企业项目实战 .Net Core + Vue/Angular 分库分表日志系统 | 简单的分库分表设计
  2. Spring Boot系列(一):Spring Boot快速开始
  3. 手把手教你写VueRouter
  4. servlet的生命周期和工作原理介绍
  5. 【转】Ubuntu下解决Depends: xxx(< 1.2.1) but xxx is to be installed
  6. latex:公式的序号
  7. python数据类型和运算符
  8. Entity Framework 6 实体某些字段根据模型状态进行自动更新内容
  9. python爬虫数据提取之bs4的使用方法
  10. unity2D物理引擎之-Rigidbody 2D