とよくいろんな文章に出てくる。こことか。
勉強のため自分で書いてみた。実用性は多分、ない。
map
- 関数fと配列xsを引数にして
- accの初期値を[]、配列の要素をeとして
- f(e)を順次accに足していく
const rMap = f => xs => xs.reduce( (acc, e) => [...acc, f(e)], [])
filter
- 関数fと配列xsを引数にして
- accの初期値を[]、配列の要素をeとして
- f(e)が真なら、eをaccの後に足す
const rFilter = f => xs => xs.reduce( (acc, e) => f(e) ? [...acc, e] : acc, [])
なるほど納得。reduce最強。