1. ホーム
  2. javascript

[解決済み] 反復可能かどうかのチェック

2022-06-04 13:20:23

質問

MDN ドキュメントでは https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of

この for...of 構成は、"iterable" オブジェクトを反復処理することができると説明されています。しかし、オブジェクトが反復可能かどうかを決定する良い方法はあるのでしょうか?

配列、イテレータ、ジェネレータの共通のプロパティを見つけようとしましたが、見つけることができませんでした。

をするのはともかくとして for ... of をtryブロック内で実行し、型エラーをチェックする以外に、これを行うきれいな方法はありますか?

どのように解決するには?

反復可能性を確認する正しい方法は以下の通りです。

function isIterable(obj) {
  // checks for null and undefined
  if (obj == null) {
    return false;
  }
  return typeof obj[Symbol.iterator] === 'function';
}

なぜこれが機能するのか(反復可能なプロトコルの深層)。 https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Iteration_protocols

私たちはfor.ofについて話しているので、ES6マインドセットであると仮定します。

また、この関数は true もし obj が文字列である場合、文字列はその文字を反復処理します。