博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【JS简洁之道小技巧】第一期 扁平化数组
阅读量:5046 次
发布时间:2019-06-12

本文共 676 字,大约阅读时间需要 2 分钟。

  介绍两种方法,一是ES6的flat,简单粗暴。二是递归,也不麻烦。

 

flat

  ES6自带了flat方法,用于使一个嵌套的数组扁平化,默认展开一个嵌套层。flat方法接收一个数字类型参数,参数值即嵌套层的深度,默认为1。(注意是“嵌套层”不是“层”,如传入0则不展开任何嵌套)

    需要注意的是:第一,flat方法一旦使用,必将移除掉数组的empty空项;第二,flat方法返回一个新数组,并不会改变原数组。

    由于我们不好确定最大嵌套层的深度,因此有个很暴力的方法,直接传入Infinity,可以展开任意深度的嵌套数组。

let flattenDeep = (arr) =>{    return arr.flat(Infinity);}

 

reduce和concat递归

  这种方法也不麻烦,以一个空数组为基础值,遇到非数组的子元素,则加入到基础值数组中;如遇到数组子元素,说明有嵌套层,则递归使用flattenDeep方法,等待其返回一维扁平数组,然后再追加到基础值数组中。最后,把这个基础值数组return出去。

let flattenDeep = (arr) =>{   return arr.reduce((prev, cur) =>     Array.isArray(cur) ? prev.concat(flattenDeep(cur)) : prev.concat(cur), []);}

  

 

  

  

转载于:https://www.cnblogs.com/zhangnan35/p/11262549.html

你可能感兴趣的文章
HDU 1548 A strange lift (Dijkstra)
查看>>
每天一个小程序—0005题(批量处理图片大小)
查看>>
IIS的各种身份验证详细测试
查看>>
JavaScript特效源码(3、菜单特效)
查看>>
Linux常用命令总结
查看>>
yii模型ar中备忘
查看>>
C#线程入门
查看>>
CSS清除浮动方法
查看>>
JVM内存回收机制简述
查看>>
洛咕 P2480 [SDOI2010]古代猪文
查看>>
js-创建对象的几种方式
查看>>
JDK JRE Java虚拟机的关系
查看>>
2018.11.20
查看>>
word20161215
查看>>
12th week blog
查看>>
dijkstra (模板)
查看>>
python小记(3)
查看>>
编译Linux驱动程序 遇到的问题
查看>>
大型分布式网站架构技术总结
查看>>
HDU 1017[A Mathematical Curiosity]暴力,格式
查看>>