【JavaScript】forEach is not a functionというエラーが出力されたら

症状

objs.forEach(obj => {
  /* 処理 */
} );

こう書いて実行したところ…

Error: Uncaught TypeError: objs.forEach is not a function

怒られました。

解決方法

配列風オブジェクトでforEachが使いたい場合、このように記載するようです。

Array.prototype.forEach.call(objs => {
  /* 処理 */
} );

配列風オブジェクトとはこんなやつ。 なんでこんなオブジェクト扱ったのかは、いまとなっては不明です。

{
  0: Apple,
  1: Banana,
  2: chocolate,
  length: 3,
};

(参考: forEach is not a function error with JavaScript array - Stack Overflow

for...of が使える

for...of文でも同じことができます。

for(let obj of objs) {
  /* 処理 */
}
  • 関数を書かなくていい。
  • break,continue,returnが使える。

というメリットがあります。 forEach以外のループも検討してみてください。