【一题】如何实现一个 flatMap 函数

2021-05-11 10:08:07 浏览数 (1)

汝拉山中的Chateau de Joux堡,法国 (© Ivoha/Alamy)

大家好,我是山月,为大家进大厂而操碎了心的小编。本文收录于 GitHub 日问: DailyQuestion[1],每天学习五分钟,一年进入大厂中。可在右下角打开原文查看

Array.prototype.flatMap 已经是 EcmaScript 的标准,看一个例子,它的输出是多少?

代码语言:javascript复制
[1, 2, [3], 4].flatMap(x => x   1)
//=> [2, 3, '31', 5]

很可惜,不是 [2, 3, 4, 5],原因在于 flatMap 实际上是先 mapflat,实现如下

代码语言:javascript复制
Array.prototype.flatMap = function (mapper) {
  return this.map(mapper).flat()
}

flat 可以如下实现

代码语言:javascript复制
const flat = list => list.reduce( (a, b) => a.concat(b), [])

0 人点赞