javascript エラー「Uncaught TypeError: Iterator value xxx is not an entry object」の解決方法
- 作成日 2022.10.28
- javascript
- javascript

javascriptで、エラー「Uncaught TypeError: Iterator value xxx is not an entry object」が発生した場合の原因と解決方法を記述してます。「Object.fromEntries」や「Map」で反復不可の値を使用した場合などのパターンで発生します。「chrome」や「firefox」や「safari」の各ブラウザのエラーメッセージの画像もキャプチャしてます。
環境
- OS windows11 pro 64bit
- Apache 2.4.43
- ブラウザ chrome 107.0.5304.63
エラー内容
以下の、文字列のみ配列要素に対してオブジェクトへの変換を行う「Object.fromEntries」を使用した際に発生。
※他のパターンは後述してます。
let arr = ['aaa', 'bbb', 'ccc'];
obj = Object.fromEntries(arr);
console.log(obj);
エラーメッセージ
sample.html:39 Uncaught TypeError: Iterator value aaa is not an entry object
画像

firefox105の場合でも同じエラーが発生します。
Uncaught TypeError: iterable for Object.fromEntries should have array-like objects
画像

safari15.5では、以下のエラーとなります。
TypeError: Object.fromEntries requires the first iterable parameter yields objects
画像

原因
「反復処理」が可能でない「文字列」に「Object.fromEntries」を使用しているため
解決方法
「反復処理」が可能な二次元配列や、
let arr = [[1,'aaa'], [2,'bbb'], [3,'ccc']];
// 配列からオブジェクトに変換
obj = Object.fromEntries(arr);
console.log(obj); // {1: 'aaa', 2: 'bbb', 3: 'ccc'}
mapを使用する
let m = new Map([[1,'aaa'], [2,'bbb'], [3,'ccc']]);
// mapからオブジェクトに変換
obj = Object.fromEntries(m);
console.log(obj); // {1: 'aaa', 2: 'bbb', 3: 'ccc'}
その他のパターン
mapにkey・value以外の値を使用
mapに対して「key」と「value」以外のデータを使用しても同様のエラーが発生します。
let m = new Map(['aaa', 'bbb', 'ccc']);
// Uncaught TypeError: Iterator value aaa is not an entry object
こちらも解決方法は、「key」と「value」を使用するしかないです。
let m = new Map([[1,'aaa'], [2,'bbb'], [3,'ccc']]);
for (let [key, value] of m) {
console.log(`${key} => ${value}`);
}
実行結果

-
前の記事
Google フォーム フォームの送信を開くショートカットキー 2022.10.28
-
次の記事
GAS スプレッドシートに入力規則を設定する 2022.10.28
コメントを書く