Array.prototype.reduce() の initialValueに関する勘違い
結論
[ ... ].reduce((prev, curr) => ..., null)
のようなことをすると、配列に要素が存在する場合、最初のprev
は null になる- ちゃんと MDN 読もうな
何がしたかったか
[ ... ].filter( ... ).reduce(...)
のようなことがしたくて、filter 後の配列が空だったときの考慮として、initialValue を null にした- null は
filter 後の配列が空だったとき
にのみ利用されるものと思い込んでいた
- null は
- 実際には filter 後の配列に要素が存在する場合、null が最初の要素として利用される
- reduce の関数内に prev の要素にアクセスするようなコードを書いていたので、
Uncaught TypeError: Cannot read property 'hoge' of null
として死んだ
- reduce の関数内に prev の要素にアクセスするようなコードを書いていたので、
まとめ
- ちゃんと MDN 読もうな
- 久々に自分のブログ書いた