イテレータのJS ES6

.iterator

1.コンセプト:反復子は異なるデータ構造の様々な統合アクセス機構を提供するインターフェース機構です。

2.役割:

  • データ構造の多様性のために、統一された、簡単にアクセスインターフェイスを提供すること。

  • データ構造メンバは、特定の順序で配置することができます。

  • 以下のための...循環の新しいトラバースコマンドをES6を作成し、Iteratorインターフェースは、主のために...消費の使用されています。

3.どのように動作します:

  1. オブジェクトへのポインタを作成し、データ構造は、開始位置を指します。

  2. 初めての方法の次の呼び出し、自動データ構造の最初のメンバーへのポインタポイント

  3. その後、次のメソッドを呼び出すために継続し、ポインタが最後のメンバーにポイントまで戻されました

  4. 次のメソッドを呼び出すたびに、値と行わ、{:現在のメンバーの値、行わ:ブール値}を含むオブジェクトを返します

    • 値は、端を横切るデータの現在の構造に対応行うかどうかを示すブール値の現在のメンバーの値を表します。

    • イテレーションの値は、完全な値が返されると、未定義行われる偽であります

図4は、データイテレータ(トラバーサルのために利用可能な)ネイティブインターフェースを含みます

  • アレイ

  • 引数

  • set容器

  • マップ・コンテナ

  • ......

1      LETのARR = [1,2,3 ];
 2  
。3      (I LETのARRの){
 4        にconsole.log(I);
 5。       
6。     }
 7。 
8。      LET OBJ = {
 9。        名: 'OBJ1'
 10      }
 11  
12は、      コンソール.logの(ARR);     //配列は、反復子がインタフェース有する
13がある      にconsole.log(ARR ...); //イテレータ3つのオペレータインタフェースをも用いる
14      にconsole.log(OBJ);
 15  
16      のために(I LETのOBJ){
 17        にconsole.log(I);      //イテレータオブジェクトは、オブジェクトインタフェースし
18である       
19。      }

アナログ実装インタフェースイテレータ

1      // アナログ実装イテレータインターフェイス
2      機能iteratorUtil(ターゲット){
 3        LETインデックス= 0 ;     // ポインタの位置を示すために、実際に
4        リターン {           //は、オブジェクトへのポインタを返す
5。          次に(){         // 次のオブジェクトのメソッドポインタ
6。           復帰をインデックス<target.length?{
 7。              値:ターゲット[インデックス++ ]、
 8は              DONE:falseに
9            }:{
 10              値:ターゲット[インデックス++ ]、
 11。              DONE:trueに
12であります           }。
13          }
 14        }
 15      }
 16  
17      // 生成一个迭代器对象
18      LETのARR = [ 123 ]。
図19は、      iteratorObj =せiteratorUtil(ARR)。
20      はconsole.log(iteratorObj.next()値。)。
21      はconsole.log(iteratorObj.next()値。)。
22      はconsole.log(iteratorObj.next()値。)。
23      はconsole.log(iteratorObj.next()値。)。

Objectオブジェクトのトラバーサルを実装6

1 ARRせ= [1,2,3,4 ]。
2  
3      VAR OBJ = {名: '神戸'、年齢:40 }。
4      //     はconsole.log(OBJ [Symbol.iterator])。//未定義
5      //     はconsole.log(ARR [Symbol.iterator])。//関数
6  
7      関数mockIterator(){
 8  
9        = LET この;
10  
11        LETインデックス= 0 12        LET長= 0 13        デバッガ
14        であれば(すなわちinstanceofのアレイ){
 15          の長さ=that.length;
16          リターン{
 17            次:関数(){
 18              リターン指数<長さ{値:その行っ[インデックス++]: }:{値:その[インデックス++]、行わ:}
 19            }
 20          }
 21        } {
 22          長さ= .LENGTH Object.keys(その)
 23の          LETキー= Object.keys(その)
24          リターン{
 25            次:関数(){
 26              リターンインデックス<長さ{値:その[キー[インデックス++]、行わ: }:{値:その[キー[インデックス++]、行わ:}
 27            }
 28          }
 29        }
 30  
31      }
 32  
33    
34  
35      配列。プロトタイプ[Symbol.iterator] = mockIterator。
36      のObject.prototype [Symbol.iterator] = mockIterator。
37  
38      のために{(I ARRのせ)
 39        にconsole.log(I)。
40      }
 41      のために(私はOBJのせ){
 42        にconsole.log(I)。
43     }

 

おすすめ

転載: www.cnblogs.com/zhihaospace/p/12023987.html