JavaScript 数组之flat和flatMap

本文探讨了JavaScript中数组的flat和flatMap方法。flat方法用于将数组及其子数组合并为一个新数组,可指定深度。flatMap则先映射每个元素,然后将其压缩成新数组,与map+flat组合相比效率更高。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章目录

flat

flat 方法会按照一个指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回

语法:arr.flat([depth])
depth:(可选)指定要提取嵌套数组的结构深度,默认值为1
返回值:一个包含将数组与子数组中所有元素的新数组

const arr = [1, 2, [3, 4]]
arr.flat()  // [1, 2, 3, 4]

const arr1 = [1, 2, [3, 4, [5, 6]]]
arr1.flat()  // [1, 2, 3, 4, [5, 6]]

const arr2 = [1, 2, [3, 4, [5, 6]]]
arr2.flat(2)  // [1, 2, 3, 4, 5, 6]

// 使用infinity,可展开任意深度的嵌套数组
const arr3 = [1, 2, [3, 4, [5, 6, [7, 8, [9, 10]]]]];
arr3.flat(Infinity)  // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

// flat方法会移除数组中的空项
const arr4 = [1, 2, , 4, 5];
arr4.flat()  // [1, 2, 4, 5]

flatMap

flatMap方法首先使用映射函数映射每个元素,然后将结果压缩成一个新数组。它与map连着深度值为1的flat几乎相同,但flatMap通常在合并成一种方法的效率稍微高些。

语法:const result = arr.flatMap(function callback(currentValue[, index[, array]]) {}[, thisArg])
callback:遍历数组中每个元素的回调函数,可以传入三个参数
   currentValue:当前正在处理的数组元素
   index:(可选)当前正在处理的元素的下标
   array:(可选)被调用的数组
thisArg:(可选)执行回调函数时指定的this值
返回值:一个新的数组,其中每个元素都是回调函数的结果,并且结构深度depth为1

const arr = [1, 2, 3, 4, 5]
arr.flatMap(item => [item * 2])  // [1, 2, 3, 4, 5]
arr.flatMap(item => [[item * 2]])  // [[2], [4], [6], [8], [10]]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值