【头条】如何实现一个 flatMap 函数 (头条)

585次阅读  |  发布于10月以前

旧金山湾的盐滩

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

[1, 2, [3], 4].flatMap(x => x + 1)
//=> [2, 3, '31', 5]

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

Array.prototype.flatMap = function (mapper) {
  return this.map(mapper).flat()
}

flat 可以如下实现

const flat = list => list.reduce( (a, b) => a.concat(b), [])

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8