汝拉山中的Chateau de Joux堡,法国 (© Ivoha/Alamy)
大家好,我是山月,为大家进大厂而操碎了心的小编。本文收录于 GitHub 日问: DailyQuestion[1],每天学习五分钟,一年进入大厂中。可在右下角打开原文查看
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), [])