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

post-hero-image

症状

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,
};


for...of が使える

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

for(let obj of objs) {
  /* 処理 */
}


  • 関数を書かなくていい
  • break,continue,returnが使える


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


* * *


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