使用flat()和flatMap来打平数组吧

简介: # 引言往往在开发中我们可能会遇到一些不平铺的,结构或是嵌套比较复杂的数组数据,那么我们面对这种数据的时候应该怎么优雅高效的处理他们的,今天让我们来学习一下使用flat()和flatMap来打平数组吧# 使用flat()和flatMap来打平数组吧今天我们来一起学习一下使用flat()和flatMap打平数组在ES2019中,flat()方法用于创建并返回一个新数组,这个新数组包含于他调用flat()的数组相同的元素,只不过其中任何本身也是数组的元素会被打平填充到返回的数组中。例如:```[1,[2,3]].flat() //会变成[1,2,3][1,[2,[3]]].

引言

往往在开发中我们可能会遇到一些不平铺的,结构或是嵌套比较复杂的数组数据,那么我们面对这种数据的时候应该怎么优雅高效的处理他们的,今天让我们来学习一下使用flat()和flatMap来打平数组吧

使用flat()和flatMap来打平数组吧

今天我们来一起学习一下使用flat()和flatMap打平数组

在ES2019中,flat()方法用于创建并返回一个新数组,这个新数组包含于他调用flat()的数组相同的元素,只不过其中任何本身也是数组的元素会被打平填充到返回的数组中。例如:

[1,[2,3]].flat() //会变成[1,2,3]
[1,[2,[3]]].flat() //会变成[1,2,[3]]

在不传参调用的时候,flat()会打平一级嵌套,原始数组中本身也是数组的元素会被打平,但是打平后的元素如果还是在数组中则不会再打平。如果想打平更多层级,需要给flat()传一个数值参数:

let a = [1,[2,[3,[4]]]];
a.flat(1) // [1,2,[3,[4]]]
a.flat(2) // [1,2,3,[4]]
a.flat(3) // [1,2,3,4]
a.flat(4) // [1,2,3,4]

flatMap()方法于map()方法相似,只不过返回的数组会自动被打平,就像传给了flat()一样。换句话说,调用a.flatMap(f)等同于但是效率远高于a.map(f).flat():

let phrases = ["hello world","balabala"];
let words = phrases.flatMap(phrase => phrase.split(" ");
console.log(words) // ["hello",world","balabala"];

可以把flatMap()想象为一个通用版的map(),可以把输入数组的一个元素映射为输出数组中的多个元素,特别地,flatMap()允许把输入元素映射为空数组,这样大屏后并不会有元素出现在数组中:

// 将非负数映射为他的平方根
[-2,-1,1,2].flatMap(x => x < 0 ? [] : Math.sqrt(x))
// 结果: [1,2**0.5]
相关文章
|
iOS开发
uView的u-datetime-picker限制开始的年月日后ios显示不出来
uView的u-datetime-picker限制开始的年月日后ios显示不出来
532 0
|
Unix Shell 开发工具
Github-Git for windows&TortoiseGit下载与安装
Github-Git for windows&TortoiseGit下载与安装
882 0
|
存储 数据安全/隐私保护
zookeeper 节点介绍及节点常用命令总结
zookeeper 节点介绍及节点常用命令总结
421 4
|
Linux PHP
Aliyun Linux 2 ,php7.0升级到7.4版本
在Aliyun Linux 2 部署LNMP时,系统源为php5.4,官方文档安装的版本为php7.0,现需要升级到7.4版本可使用如下方法。
2054 0
Aliyun Linux 2 ,php7.0升级到7.4版本
|
JavaScript 前端开发 索引
JS遍历数组里数组下的对象,根据数组中对象的某些值,组合成新的数组对象
这篇文章介绍了如何在JavaScript中遍历数组里数组下的对象,并根据对象的某些属性值组合成一个新的数组对象。主要内容包括使用ES6的`for...of`循环来遍历数组对象,然后根据需要提取对象中的属性值,并将它们放入新的对象中,最终形成一个新的对象数组以供使用。
|
11月前
|
前端开发 JavaScript
uniapp纯CSS实现圆形进度条组件
uniapp纯CSS实现圆形进度条组件
539 0
|
负载均衡 数据管理
ClickHouse的分布式查询流程
ClickHouse的分布式查询流程
|
JavaScript 前端开发
javascript中常见获取时间戳的方法
javascript中常见获取时间戳的方法
251 0
|
缓存 JavaScript 数据库
手把手教你搭建私有化npm
手把手教你搭建私有化npm
559 2