JavaScriptにおけるreduce()方法の使用詳細

2721 ワード

JavaScript配列reduce()方法は、配列の2つの値(左から右へ)に対して関数を適用して、1つの値に減らします.構文

array.reduce(callback[, initialValue]);

以下はパラメータの詳細です.
  •     calback:関数実行行列内の各値
  •     initial Value:オブジェクトは最初のパラメータコールとして
  • を使用します.
    戻り値:
    は、単一の値の互換性を減らす配列を返します.
    この方法はJavaScriptをECMA-262標準に拡張したものです.したがって、標準的な他の実装では存在しないかもしれない.それを作動させるためには、次のスクリプトコードの上部を追加する必要があります.
    
    if (!Array.prototype.reduce)
    {
     Array.prototype.reduce = function(fun /*, initial*/)
     {
      var len = this.length;
      if (typeof fun != "function")
       throw new TypeError();
    
      // no value to return if no initial value and an empty array
      if (len == 0 && arguments.length == 1)
       throw new TypeError();
    
      var i = 0;
      if (arguments.length >= 2)
      {
       var rv = arguments[1];
      }
      else
      {
       do
       {
        if (i in this)
        {
         rv = this[i++];
         break;
        }
    
        // if array contains no values, no initial value to return
        if (++i >= len)
         throw new TypeError();
       }
       while (true);
      }
    
      for (; i < len; i++)
      {
       if (i in this)
        rv = fun.call(null, rv, this[i], i, this);
      }
    
      return rv;
     };
    }
    
    
    例:
    
    
    
    JavaScript Array reduce Method
    
    
    
    if (!Array.prototype.reduce)
    {
     Array.prototype.reduce = function(fun /*, initial*/)
     {
      var len = this.length;
      if (typeof fun != "function")
       throw new TypeError();
    
      // no value to return if no initial value and an empty array
      if (len == 0 && arguments.length == 1)
       throw new TypeError();
    
      var i = 0;
      if (arguments.length >= 2)
      {
       var rv = arguments[1];
      }
      else
      {
       do
       {
        if (i in this)
        {
         rv = this[i++];
         break;
        }
    
        // if array contains no values, no initial value to return
        if (++i >= len)
         throw new TypeError();
       }
       while (true);
      }
    
      for (; i < len; i++)
      {
       if (i in this)
        rv = fun.call(null, rv, this[i], i, this);
      }
    
      return rv;
     };
    }
    
    var total = [0, 1, 2, 3].reduce(function(a, b){ return a + b; });
    document.write("total is : " + total ); 
    
    
    
    
    
    これは以下の結果を生むだろう.
    
    total is : 6