JavaScript中reduce()方法的使用详解


Posted in Javascript onJune 09, 2015

 JavaScript 数组reduce()方法同时应用一个函数针对数组的两个值(从左到右),以减至一个值。
语法

array.reduce(callback[, initialValue]);

下面是参数的详细信息:

  •     callback : 函数执行在数组中每个值
  •     initialValue : 对象作为第一个参数回调的第一次调用使用

返回值:

返回数组的减少单一个值
兼容性

这种方法是一个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;
 };
}

例子:

<html>
<head>
<title>JavaScript Array reduce Method</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();

  // 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 ); 
</script>
</body>
</html>

这将产生以下结果:

total is : 6
Javascript 相关文章推荐
网页常用特效代码整理
Jun 23 Javascript
基于jquery的jqDnR拖拽溢出的修改
Feb 12 Javascript
Javascript中的匿名函数与封装介绍
Mar 15 Javascript
纯JavaScript 实现flappy bird小游戏实例代码
Sep 27 Javascript
JavaScript实现的冒泡排序法及统计相邻数交换次数示例
Apr 26 Javascript
react-native ListView下拉刷新上拉加载实现代码
Aug 03 Javascript
VsCode插件整理(小结)
Sep 14 Javascript
微信小程序实现的绘制table表格功能示例
Apr 26 Javascript
使用 vue 实现灭霸打响指英雄消失的效果附demo
May 06 Javascript
uni-app 支持多端第三方地图定位的方法
Jan 03 Javascript
从零使用TypeScript开发项目打包发布到npm
Feb 14 Javascript
Element Collapse 折叠面板的使用方法
Jul 26 Javascript
简介JavaScript中的push()方法的使用
Jun 09 #Javascript
JavaScript中pop()方法的使用教程
Jun 09 #Javascript
在JavaScript中操作数组之map()方法的使用
Jun 09 #Javascript
JavaScript中join()方法的使用简介
Jun 09 #Javascript
Jquery日期选择datepicker插件用法实例分析
Jun 08 #Javascript
Jquery实现遮罩层的方法
Jun 08 #Javascript
js正则匹配出所有图片及图片地址src的方法
Jun 08 #Javascript
You might like
Apache, PHP在Windows 9x/NT下的安装与配置 (一)
2006/10/09 PHP
PHP汉字转换拼音的函数代码
2015/12/30 PHP
thinkPHP框架实现类似java过滤器的简单方法示例
2018/09/05 PHP
php设计模式之建造器模式分析【星际争霸游戏案例】
2020/01/23 PHP
添加到收藏夹代码(兼容几乎所有的浏览器)
2007/01/09 Javascript
在textarea中显示html页面的javascript代码
2007/04/20 Javascript
javascript 原型模式实现OOP的再研究
2009/04/09 Javascript
JavaScript DSL 流畅接口(使用链式调用)实例
2015/03/15 Javascript
使用vue如何构建一个自动建站项目
2018/02/05 Javascript
详解如何运行vue项目
2019/04/15 Javascript
Python实现类继承实例
2014/07/04 Python
Python实现matplotlib显示中文的方法详解
2018/02/06 Python
如何优雅地改进Django中的模板碎片缓存详解
2018/07/04 Python
Python中利用aiohttp制作异步爬虫及简单应用
2018/11/29 Python
python实现列表中最大最小值输出的示例
2019/07/09 Python
自适应线性神经网络Adaline的python实现详解
2019/09/30 Python
DJANGO-URL反向解析REVERSE实例讲解
2019/10/25 Python
浅谈图像处理中掩膜(mask)的意义
2020/02/19 Python
python中wheel的用法整理
2020/06/15 Python
详解Python中openpyxl模块基本用法
2021/02/23 Python
使用Html5中的cavas画一面国旗
2019/09/25 HTML / CSS
Audible英国:有声读物,30天免费试用
2019/10/16 全球购物
自考自我鉴定范文
2013/10/30 职场文书
自我评价怎么写好呢?
2013/12/05 职场文书
学校门卫管理制度
2014/01/30 职场文书
教师一岗双责责任书
2014/04/16 职场文书
家长会演讲稿
2014/04/26 职场文书
幼儿园教研活动总结
2014/04/30 职场文书
六一儿童节演讲稿
2014/05/23 职场文书
抗洪救灾先进集体事迹材料
2014/05/26 职场文书
四风问题个人剖析材料
2014/10/07 职场文书
工作年限证明范本
2015/06/15 职场文书
2016年世界人口日宣传活动总结
2016/04/05 职场文书
同学聚会开幕词
2019/04/02 职场文书
Python利用capstone实现反汇编
2022/04/06 Python
零基础学java之带参数以及返回值的方法
2022/04/10 Java/Android