JSが手書きのforEachアルゴリズムの例を実現します。


本論文の実例はJSが手書きのforEachアルゴリズムを実現することを述べている。皆さんに参考にしてあげます。具体的には以下の通りです。
手書きforEachforEach()方法は、配列の各要素に対して一度に提供される関数を実行する。
arr.forEach(calback(current Value[,index[,array]])[,thisArg]]

  • calback
  • current Value
    配列で処理されている現在の要素。
  • indexオプション
    配列で処理されている現在の要素の索引です。
  • arrayオプション
    forEach()メソッドが動作している配列。
  • thisArgオプション
    オプションのパラメータ。コールバック関数を実行すると、thisの値として使用されます。
  • は戻り値
  • がありません。
    1つのthisArgパラメータがforEach関数に提供されると、パラメータは、コールバック関数のthis値として作用する。thisの値はundefinedです。コールバック関数におけるthisのバインディングは、関数が呼び出されたときに共通するthisバインディング規則に基づいて決定される。
    
    let arr = [1, 2, 3, 4];
    
    arr.forEach((...item) => console.log(item));
    
    // [1, 0, Array(4)]    
    
    
    
    function Counter() {
     this.sum = 0;
     this.count = 0;
    }
    
    //    thisArg   (this)    forEach(),     ,      callback   ,     this  。
    Counter.prototype.add = function(array) {
     array.forEach(function(entry) {
      this.sum += entry;
      ++this.count;
     }, this);
     // ^---- Note
    };
    
    const obj = new Counter();
    obj.add([2, 5, 9]);
    obj.count;
    // 3 === (1 + 1 + 1)
    obj.sum;
    // 16 === (2 + 5 + 9)
    
    
  • の各配列にはこの方法があります。
  • コールバックパラメータは、各項目、インデックス、元の配列
  • です。
    
    Array.prototype.forEach = function(fn, thisArg) {
     var _this;
     if (typeof fn !== "function") {
      throw "       ";
     }
     if (arguments.length > 1) {
      _this = thisArg;
     }
     if (!Array.isArray(arr)) {
      throw "       forEach  ";
     }
    
     for (let index = 0; index < arr.length; index++) {
      fn.call(_this, arr[index], index, arr);
     }
    };
    
    
    興味のある友達はオンラインHTML/CSS/JavaScriptコードを使ってツールを実行できます。http://tools.jb51.net/code/HtmlJsRun上記コードの運行効果をテストします。
    もっと多くのJavaScriptに関する内容に興味がある読者は、当駅のテーマを見ることができます。「JavaScript数学演算の使い方のまとめ」、「JavaScriptデータ構造とアルゴリズム技術のまとめ」、「JavaScript配列操作技術のまとめ」、「JavaScriptソートアルゴリズムのまとめ」、「JavaScriptはアルゴリズムと技術の総括を遍歴します。」、「JavaScript検索アルゴリズムのテクニックのまとめ」および「JavaScriptエラーとデバッグテクニックのまとめ
    本論文で述べたように、JavaScriptプログラムの設計に役に立ちます。