使用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]
相关文章
|
3月前
使用indices()函数创建数组
使用indices()函数创建数组。
37 3
|
3月前
lambda中sorted排序
lambda中sorted排序
|
9月前
ES6系列笔记-数组方法reduce和forEach
ES6系列笔记-数组方法reduce和forEach
26 1
关于数组中forEach() 、map()、filter()、reduce()、some()、every()的总结
关于数组中forEach() 、map()、filter()、reduce()、some()、every()的总结
42 0
ES6常用数组方法总结(max,contant,some,every,filter,reduce,forEach,map)
1.求最大值(Math.max) 2.数组添加到另外一个数组的尾部(...扩展符) 3.复制数组 3.1数组直接赋值 3.2 es5通过concat方法进行克隆,不会影响原来数组 3.3 es6通过扩展字符串来实现克隆 4.用Object.keys清空对象的属性值 5.forEach,遍历数组,无返回值,不改变原数组 6.map遍历数组,返回新数组,不改变原数组 7.filter,过滤掉数组不符合条件的值,返回新数组,不改变原数组 8.reduce 9 some() 10.every
160 0
ES6常用数组方法总结(max,contant,some,every,filter,reduce,forEach,map)
|
索引
Array.prototype.flatMap()
Array.prototype.flatMap()
77 0
|
JavaScript 前端开发 测试技术
以前我没得选,现在只想用 Array.reduce(上)
第一眼看 Array.reduce 这个函数总感觉怪怪的,用法也得花几分种才弄懂,懂了之后也不知道应用场景是啥。最近写项目的时候才慢慢对这个函数有更多的理解,可以算是 Array 类型下最强大的函数之一了。
以前我没得选,现在只想用 Array.reduce(上)
|
前端开发 JavaScript 测试技术
以前我没得选,现在只想用 Array.reduce(下)
第一眼看 Array.reduce 这个函数总感觉怪怪的,用法也得花几分种才弄懂,懂了之后也不知道应用场景是啥。最近写项目的时候才慢慢对这个函数有更多的理解,可以算是 Array 类型下最强大的函数之一了。
以前我没得选,现在只想用 Array.reduce(下)
|
JavaScript 前端开发 索引
JavaScript 数组展平方法: flat() 和 flatMap()
作为一门主流的WEB编程语言,JavaScript 不断发展,添加新的语法、功能或抽象,帮助开发人员轻松解决复杂的问题。如数组展平过去需要自己编写方法来实现,而从 ES2019 中开始引入了一种扁平化数组的新方法,可以展平任何深度的数组,这个方法就是 flat() 。而说起 flat() 的方法,就不得不顺便说下 flatMap() 。
198 0