问题:[[1, 1], [2, 3], [4, 5]] -> [1, 1, 2, 3, 4, 5]?

方法一

利用es5arr.reduce(callback[, initialValue])实现

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]

方法二

利用es6

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]优点: 多维数组也可以
比如:var arr = [[1,2],3,[[[4], 5]]]

方法三

利用apply实现

var arr1 = [[0, 1], [2, 3], [4, 5]];
var arr2 = [].concat.apply([], arr1);
// arr2 [0, 1, 2, 3, 4, 5]

方法四

通过将数组转变成字符串,利用str.split(',')实现。缺点是数组元素都变字符串了

var arr1 = [[0, 1], [2, 3], [4, 5]];var arr2 = (arr1 + '').split(',');var arr2 = arr.toString().split(',');var arr2 = arr.join().split(',');// arr2 ["0", "1", "2", "3", "4", "5"]

方法五(补充)

利用 ES 的最新语法,Array.prototype.flat()。缺点是,有兼容性问题。优点是非常简单。

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]

特殊说明:flat()方法会移除数组中的空项。但undefined、null仍会保留。

var arr = [1, 2, undefined , 4, 5, null];
arr.flat(); // [1, 2, undefined , 4, 5, null]

数组concat_js 标准二维数组变一维数组的方法相关推荐

  1. php 数组与数组之间去重,PHP开发中一维数组与二维数组去重功能实现教程

    本篇文章讲述了PHP实现一维数组与二维数组去重功能示例.希望对在php学习和开发的同学有所帮助! 数组中重复项的去除 一维数组的重复项: 使用array_unique函数即可,使用实例如下: ? $a ...

  2. php 二维数组变一维数组,PHP二维数组如何转换为一维数组

    PHP二维数组转换为一维数组的方法:1.使用"array_column($array, column_key,index_key);"方法实现转换:2.通过"array_ ...

  3. Numpy 生成 Bool型数组、一维转多维数组reshape、多维转一维数组、替换数组元素、提取数组元素、数组交集、差集、过滤数组元素、二维数组反转行、交换数组维度

    1. 创建一个 [3,5] 所有元素为 True 的数组 In [162]: b = np.ones((3,5), dtype=bool)In [163]: b Out[163]: array([[ ...

  4. c语言实验报告5数组,c语言实验报告五一维数组.doc

    c语言实验报告五一维数组 <C程序设计>课程实验报告 学院: 班级: 姓名: 学号: 实验设备:计算机1台2011年3月1日 实验项目名称一维数组 掌握一维数组的定义.初始化,以及一维数组 ...

  5. c++ 一维数组长度_每天一点C / 一维数组和指针

    哈喽,我是老吴,继续记录我的学习心得. 每天一点系列是我对微习惯的践行.现在能做到每天一点 C,将来就会有更多的每天一点系列,没人规定嵌入式软件工程师就只能学习 C 语言和折腾 Linux,不要给自己 ...

  6. es6一维数组转二维数组_技术图文:Numpy 一维数组 VS. Pandas Series

    背景 Numpy 提供的最重要的数据结构是 ndarray,它是 Python 中 list 的扩展. Pandas 提供了两种非常重要的数据结构 Series和DataFrame. Numpy 中的 ...

  7. led流水灯c语言数组程序,LED流水灯程序 一维数组写法

    LED流水灯程序 一维数组写法 /*********** (C) COPYRIGHT 201 2************ * 程序作者: 蓝雨(QQ:983931459 ,Email:chenheng ...

  8. c语言中一维数组和二维数组,详解C++中的一维数组和二维数组

    C++一维数组 定义一维数组 定义一维数组的一般格式为: 类型标识符  数组名[常量表达式]; 例如: int a[10]; 它表示数组名为a,此数组为整型,有10个元素. 关于一维数组的几点说明: ...

  9. VBA数组赋值(1/2)-- 一维数组

    以前的博客文章中讲过一些数组的使用技巧,经常会被网友问道如何给数组赋值,本文讲解如何为一维数组赋值(或者说如何创建一维数组). Option Base 1 Sub demo1()Dim myArray ...

最新文章

  1. Java构造函数的使用_java中构造函数的使用方法
  2. go程序执行流程分析
  3. mysql 保留两位小数
  4. h3c交换机配置远程管理_高手给说下H3C交换机如何配置telnet远程登录
  5. 看完这篇Redis缓存三大问题,够你和面试官battle几回合了
  6. 4017-二叉排序树的限定条件下的数据输出(C++,附思路及建立时的可能错误排查)
  7. 鸿蒙电视投屏软件,鸿蒙打造 未来电视就这样!荣耀智慧屏PRO深度评测
  8. Waymo无人卡车高调重返凤凰城,重点路测高速和主干道,但货运先机已失
  9. 有限状态机FSM的写法
  10. Android n multi-window多窗口支持
  11. 内网穿透 (Natapp)
  12. Visual Studio使用ILDasm反汇编工具查看托管模块
  13. mysql表结构导出word_利用word宏功能一键导出数据库表结构
  14. Python数据分析练习
  15. Ubuntu22.04设置静态ip
  16. 如何才能做到色彩平衡?
  17. ATW热泵市场现状及未来发展趋势分析
  18. 那些年,你与快递小哥的爱恨情仇...
  19. 国内下载vscode速度慢问题解决
  20. iOS如何阻止“橡皮筋效果”?

热门文章

  1. csv导入mysql phpmyadmin_【转】从phpMyAdmin批量导入Excel内容到MySQL(亲测非常简洁有效)...
  2. 度量计算机外部传输单位,用来度量计算机外部设备传输率的是什么度量单位?...
  3. ups一直响是什么原因_UPS的完整形式是什么?
  4. Chrome浏览器必装的扩展工具
  5. asp.net mvc3.0第一个程序helloworld开发图解
  6. Android Call requires API level 11 (current min is 8)的解决方案
  7. python爬虫 asyncio aiohttp aiofiles 单线程多任务异步协程爬取图片
  8. Nginx-ingress部署及使用
  9. mysql集群搭建(使用docker 一主一从)
  10. JQuery Datatables editor 在编辑前刷新数据