ES10 |数组扩展

101 阅读1分钟

Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情

ES系列文章

ES10 数组扩展

Array.pototype.flat()

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

Array.prototype.flat() 用于将嵌套的数组“扁平化”,将二维数组变成一维数组。该方法返回一个新数组,对原数据没有影响。

//`flat()` 方法会移除数组中的空项:
const arr = [1, 2,  3, [4, 5, 6, [7, 8, 9, [10, 11, 12]]]]
//参数:depth 可选,指定要提取嵌套数组的结构深度,默认值为 1。
//返回值:一个包含数组与子数组中所有元素的新数组。
console.log(arr.flat())
console.log(arr.flat().flat())
console.log(arr.flat().flat().flat())
console.log(arr.flat(3))
//使用 Infinity,可展开任意深度的嵌套数组:(了解就行)
console.log(arr.flat(Infinity))

使用reduce()和concat()可以替代flat()方法

Array.pototype.flatMap()

flatMap()方法对原数组的每个成员执行一个函数,相当于执行Array.prototype.map(),然后对返回值组成的数组执行flat()方法。该方法返回一个新数组,不改变原数组,且只能展开一层数组

const arr = [1, 2, 3, 4, 5]
// const res = arr.map(x => x + 1)
// const res = arr.map(x => [x + 1]).flat()
const res = arr.flatMap(x => [x + 1])
console.log(res)

一个前端小白,若文章有错误内容,欢迎大佬指点讨论!