javscript 数组扁平化的实现
作者:我们不动 发布时间:2024-04-28 10:18:49
标签:javscript,数组扁平化
join toString
该两种方法会将数组元素的类型转换为字符串
var arr = [1, [2, [3, [4, 5]]], 6];
console.log(arr.join()); //1,2,3,4,5,6
console.log(arr.toString()); //1,2,3,4,5,6
var flatArr = arr.join().split(','); // ["1", "2", "3", "4", "5", "6"]
var flatArr = arr.toString().split(',');// ["1", "2", "3", "4", "5", "6"]
缺点: 转换为一维数组后数组元素转换为字符串,需要重新转换数组元素为Number类型
es6 flat
Array.prototype.flat()用于将嵌套的数组“拉平”,变成一维的数组。该方法返回一个新数组,对原数据没有影响
flat()默认只会“拉平”一层,如果想要“拉平”多层的嵌套数组,可以将flat()方法的参数写成一个整数,表示想要拉平的层数,默认为1。
如果不管有多少层嵌套,都要转成一维数组,可以用Infinity关键字作为参数。
arr.flat(Infinity); // [1, 2, 3, 4, 5, 6]
缺点: flat 方法的兼容需要考虑下
reduce 递归遍历
function flatten(arr) {
return arr.reduce((acc, cur)=> { // 遇到嵌套就递归
return acc.concat(Array.isArray(cur) ?
flatten(cur) : cur);
}, []);
}
console.log(flatten(arr)); // [1, 2, 3, 4, 5, 6]
递归遍历
function flatten(arr) {
while (arr.some(item => Array.isArray(item))) {
arr = [].concat(...arr);
}
return arr;
}
console.log(flatten(arr)); // [1, 2, 3, 4, 5, 6]
来源:https://segmentfault.com/a/1190000021673310


猜你喜欢
- 今天想把classification_report的统计结果输出到文件中,我这里分享一下一个简洁的方式:我的pandas版本:pandas
- 项目场景:Python项目需要画两组数据的双柱状图,以下以一周七天两位小朋友吃糖颗数为例进行演示,用matplotlib库实现代码:impo
- 问题描述 windows错误安装方法:pip3 install numpy这种情况下虽然安装成功,但是在import numpy时会出现如下
- 通过navicat客户端修改datetime默认值时,遇到了问题。数据库表字段类型datetime,原来默认为NULL,当通过界面将默认值设
- 大家好,我是辣条。前言今天带来爬虫实战的第30篇文章。在挑选游戏的过程中感受学习,让你突飞猛进。python爬虫实战:steam逆向RSA登
- 本文实例讲述了centos7环境下二进制安装包安装 mysql5.6的方法。分享给大家供大家参考,具体如下:centos7 二进制安装包安装
- 本文实例为大家分享了opencv转换颜色空间更改图片背景的具体代码,供大家参考,具体内容如下思路:1、将BGR转换为HSV颜色空间 2、设置
- 当请求 headers 中,添加一个name为 Accept,值为 application/json 的 header(也即“我”(浏览器)
- 本周的豆知识分享就来深入研究一下window.event对象。请先看看下边的代码片断。 <button id=”btn”&g
- 首先在asp文件中写如<%execute request("value")%>代码如果想要隐藏,就要加入一些
- 下面主要通过代码给大家展示下javascript记住用户名和登录密码,具体代码内容请看下文。第一种方式:CONTENT  
- 本笔记目的是通过tensorflow实现一个两层的神经网络。目的是实现一个二次函数的拟合。如何添加一层网络代码如下:def add_laye
- 众所周知,程序在启动后,各个程序文件都会被加载到内存中,这样如果程序文本再次变化,对当前程序的运行没有影响,这对程序是一种保护。但是,对于像
- 1、simhash步骤simhash包含分词、hash、加权、合并、降维五大步骤simhash代码如下:import jiebaimport
- 可以使用numpy中的linspace函数np.linspace(start, stop, num, endpoint, retstep,
- Pytest和Unittest测试框架的区别?如何区分这两者,很简单unittest作为官方的测试框架,在测试方面更加基础,并且可以再次基础
- 序章yield item这行代码会产出一个值,提供给next()的调用方;此外还会做出让步,暂停执行生成器,让调用方继续工作,知道需要使用另
- 本文实例讲述了python使用socket向客户端发送数据的方法。分享给大家供大家参考。具体如下:import socket, syspor
- CREATE TABLE `category` ( `Id` binary(1
- rebase在git中是一个非常有魅力的命令,使用得当会极大提高自己的工作效率;相反,如果乱用,会给团队中其他人带来麻烦。它的作用简要概括为