数组concat_js 标准二维数组变一维数组的方法
问题:[[1, 1], [2, 3], [4, 5]] -> [1, 1, 2, 3, 4, 5]?
方法一
利用es5
的arr.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 标准二维数组变一维数组的方法相关推荐
- php 数组与数组之间去重,PHP开发中一维数组与二维数组去重功能实现教程
本篇文章讲述了PHP实现一维数组与二维数组去重功能示例.希望对在php学习和开发的同学有所帮助! 数组中重复项的去除 一维数组的重复项: 使用array_unique函数即可,使用实例如下: ? $a ...
- php 二维数组变一维数组,PHP二维数组如何转换为一维数组
PHP二维数组转换为一维数组的方法:1.使用"array_column($array, column_key,index_key);"方法实现转换:2.通过"array_ ...
- Numpy 生成 Bool型数组、一维转多维数组reshape、多维转一维数组、替换数组元素、提取数组元素、数组交集、差集、过滤数组元素、二维数组反转行、交换数组维度
1. 创建一个 [3,5] 所有元素为 True 的数组 In [162]: b = np.ones((3,5), dtype=bool)In [163]: b Out[163]: array([[ ...
- c语言实验报告5数组,c语言实验报告五一维数组.doc
c语言实验报告五一维数组 <C程序设计>课程实验报告 学院: 班级: 姓名: 学号: 实验设备:计算机1台2011年3月1日 实验项目名称一维数组 掌握一维数组的定义.初始化,以及一维数组 ...
- c++ 一维数组长度_每天一点C / 一维数组和指针
哈喽,我是老吴,继续记录我的学习心得. 每天一点系列是我对微习惯的践行.现在能做到每天一点 C,将来就会有更多的每天一点系列,没人规定嵌入式软件工程师就只能学习 C 语言和折腾 Linux,不要给自己 ...
- es6一维数组转二维数组_技术图文:Numpy 一维数组 VS. Pandas Series
背景 Numpy 提供的最重要的数据结构是 ndarray,它是 Python 中 list 的扩展. Pandas 提供了两种非常重要的数据结构 Series和DataFrame. Numpy 中的 ...
- led流水灯c语言数组程序,LED流水灯程序 一维数组写法
LED流水灯程序 一维数组写法 /*********** (C) COPYRIGHT 201 2************ * 程序作者: 蓝雨(QQ:983931459 ,Email:chenheng ...
- c语言中一维数组和二维数组,详解C++中的一维数组和二维数组
C++一维数组 定义一维数组 定义一维数组的一般格式为: 类型标识符 数组名[常量表达式]; 例如: int a[10]; 它表示数组名为a,此数组为整型,有10个元素. 关于一维数组的几点说明: ...
- VBA数组赋值(1/2)-- 一维数组
以前的博客文章中讲过一些数组的使用技巧,经常会被网友问道如何给数组赋值,本文讲解如何为一维数组赋值(或者说如何创建一维数组). Option Base 1 Sub demo1()Dim myArray ...
最新文章
- Java构造函数的使用_java中构造函数的使用方法
- go程序执行流程分析
- mysql 保留两位小数
- h3c交换机配置远程管理_高手给说下H3C交换机如何配置telnet远程登录
- 看完这篇Redis缓存三大问题,够你和面试官battle几回合了
- 4017-二叉排序树的限定条件下的数据输出(C++,附思路及建立时的可能错误排查)
- 鸿蒙电视投屏软件,鸿蒙打造 未来电视就这样!荣耀智慧屏PRO深度评测
- Waymo无人卡车高调重返凤凰城,重点路测高速和主干道,但货运先机已失
- 有限状态机FSM的写法
- Android n multi-window多窗口支持
- 内网穿透 (Natapp)
- Visual Studio使用ILDasm反汇编工具查看托管模块
- mysql表结构导出word_利用word宏功能一键导出数据库表结构
- Python数据分析练习
- Ubuntu22.04设置静态ip
- 如何才能做到色彩平衡?
- ATW热泵市场现状及未来发展趋势分析
- 那些年,你与快递小哥的爱恨情仇...
- 国内下载vscode速度慢问题解决
- iOS如何阻止“橡皮筋效果”?
热门文章
- csv导入mysql phpmyadmin_【转】从phpMyAdmin批量导入Excel内容到MySQL(亲测非常简洁有效)...
- 度量计算机外部传输单位,用来度量计算机外部设备传输率的是什么度量单位?...
- ups一直响是什么原因_UPS的完整形式是什么?
- Chrome浏览器必装的扩展工具
- asp.net mvc3.0第一个程序helloworld开发图解
- Android Call requires API level 11 (current min is 8)的解决方案
- python爬虫 asyncio aiohttp aiofiles 单线程多任务异步协程爬取图片
- Nginx-ingress部署及使用
- mysql集群搭建(使用docker 一主一从)
- JQuery Datatables editor 在编辑前刷新数据