javascript エラー「Uncaught TypeError: xxx is not iterable」の解決方法

javascript エラー「Uncaught TypeError: xxx is not iterable」の解決方法

javascriptで、エラー「Uncaught TypeError: xxx is not iterable」が発生した場合の原因と解決方法を記述してます。「反復可能」なオブジェクト以外に「for-of」を使用した際に発生します。

環境

  • OS windows11 pro 64bit
  • Apache 2.4.43
  • ブラウザ chrome 108.0.5359.99

エラー内容

以下の「for-of」を使用したコードで発生。

let obj = { a: 1, b: 2, c: 3 };

for (let i of obj) {
  console.log(obj[i]);
}

エラーメッセージ

Uncaught TypeError: obj is not iterable

画像

firefox(バージョン107)でも、同様のエラーとなります。

Uncaught TypeError: obj is not iterable

画像

原因

「for-of」は、「反復可能」なオブジェクトでのみ使用できるため

解決方法

「Object.values」を使用するか、

let obj = { a: 1, b: 2, c: 3 };

console.log( Object.values(obj) ) // [1, 2, 3]

for (const value of Object.values(obj)) {
    console.log(value);
}

「for-in」を使用する。

let obj = {a: 1, b: 2, c: 3 };

for (let i in obj) {
  console.log(obj[i]);
}

実行結果