Array.prototype.reduce() の initialValueに関する勘違い

結論

  1. [ ... ].reduce((prev, curr) => ..., null) のようなことをすると、配列に要素が存在する場合、最初の prev は null になる
  2. ちゃんと MDN 読もうな

何がしたかったか

  • [ ... ].filter( ... ).reduce(...) のようなことがしたくて、filter 後の配列が空だったときの考慮として、initialValue を null にした
    • null は filter 後の配列が空だったとき にのみ利用されるものと思い込んでいた
  • 実際には filter 後の配列に要素が存在する場合、null が最初の要素として利用される
    • reduce の関数内に prev の要素にアクセスするようなコードを書いていたので、 Uncaught TypeError: Cannot read property 'hoge' of null として死んだ

まとめ

  • ちゃんと MDN 読もうな
  • 久々に自分のブログ書いた