旧金山湾的盐滩
Array.prototype.flatMap
已经是 EcmaScript 的标准,看一个例子,它的输出是多少?
[1, 2, [3], 4].flatMap(x => x + 1)
//=> [2, 3, '31', 5]
很可惜,不是 [2, 3, 4, 5]
,原因在于 flatMap
实际上是先 map
再 flat
,实现如下
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