JavaScript 数组reduce()方法

JavaScript 数组reduce()方法

说明

Javascript数组 reduce() 方法同时将数组的两个值(从左到右)应用于函数中,以将其减少为单个值。

语法

语法如下 –

array.reduce(callback[,initialValue])。

参数详细信息

  • 回调 - 数组中的每个值要执行的函数。

  • initialValue - 用作回调的第一个参数的对象。

返回值

返回数组的减少单个值。

兼容性

此方法是ECMA-262标准的JavaScript扩展; 因此,它可能不存在于标准的其他实现中。要使它起作用,您需要在脚本顶部添加以下代码。

if (!Array.prototype.reduce) {
   Array.prototype.reduce = function (fun / *,initial * /) {
      var len = this.length;

      if(typeof fun != "function")
       throw new TypeError();

      //没有值可以返回,如果没有初始值和一个空的数组
      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 (++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;
   };
}

例子

请尝试以下示例。

<html>
   <head>
      <title>JavaScript数组reduce方法</title>
   </head>

   <body>
      <script type = "text/javascript">
         if (!Array.prototype.reduce) {
            Array.prototype.reduce = function (fun / *,initial * /) {
               var len = this.length;

               if(typeof fun != "function")
                throw new TypeError();

               //没有值可以返回,如果没有初始值和一个空的数组
               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 (++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); 
      </script>
   </body>
</html>

输出

total is : 6

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程