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 相关文章推荐
jquery uaMatch源代码
Feb 14 Javascript
JavaScript高级程序设计 客户端存储学习笔记
Sep 10 Javascript
jQuery使用技巧简单汇总
Apr 18 Javascript
浅谈JavaScript中定义变量时有无var声明的区别
Aug 18 Javascript
常用的jquery模板插件——jQuery Boilerplate介绍
Sep 23 Javascript
Javascript学习笔记之数组的构造函数
Nov 23 Javascript
快速掌握Node.js环境的安装与运行方法
Feb 16 Javascript
AngularJS extend用法详解及实例代码
Nov 15 Javascript
react router4+redux实现路由权限控制的方法
May 03 Javascript
axios携带cookie配置详解(axios+koa)
Dec 28 Javascript
微信小程序把百度地图坐标转换成腾讯地图坐标过程详解
Jul 10 Javascript
JS Object构造函数之Object.freeze
Apr 28 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
Netflix将与CLAMP、乙一以及冲方丁等6名知名制作人合伙展开原创动画计划!
2020/03/06 日漫
php str_pad() 将字符串填充成指定长度的字符串
2010/02/23 PHP
解析php获取字符串的编码格式的方法(函数)
2013/06/21 PHP
Laravel框架学习笔记之批量更新数据功能
2019/05/30 PHP
JavaScript 基础知识 被自己遗忘的
2009/10/15 Javascript
js 固定悬浮效果实现思路代码
2013/08/02 Javascript
jquery select 设置默认选中的示例代码
2014/02/07 Javascript
javascript实现简单的分页特效
2015/08/12 Javascript
js实现的星星评分功能函数
2015/12/09 Javascript
原生JS实现图片轮播效果
2016/12/26 Javascript
AngularJS表格样式简单设置方法示例
2017/03/03 Javascript
ES6中的Promise代码详解
2017/10/09 Javascript
Bootstrap图片轮播效果详解
2017/10/17 Javascript
纯js代码生成可搜索选择下拉列表的实例
2018/01/11 Javascript
Node.js API详解之 os模块用法实例分析
2020/05/06 Javascript
vue实现多个echarts根据屏幕大小变化而变化实例
2020/07/19 Javascript
uin-app+mockjs实现本地数据模拟
2020/08/26 Javascript
在Python中操作字符串之startswith()方法的使用
2015/05/20 Python
Python实现螺旋矩阵的填充算法示例
2017/12/28 Python
python书籍信息爬虫实例
2018/03/19 Python
Flask实现图片的上传、下载及展示示例代码
2018/08/03 Python
pycharm安装和首次使用教程
2018/08/27 Python
python解压TAR文件至指定文件夹的实例
2019/06/10 Python
如何用python免费看美剧
2020/08/11 Python
html5的localstorage详解
2017/05/09 HTML / CSS
英国领先的野生鸟类食品供应商:GardenBird
2018/08/09 全球购物
MySQL面试题
2014/01/12 面试题
Java面试笔试题大全
2016/11/23 面试题
婚纱摄影师求职信
2014/03/07 职场文书
党员学习中共十八大报告思想汇报
2014/09/15 职场文书
迟到检讨书
2015/01/26 职场文书
车间统计员岗位职责
2015/04/14 职场文书
信仰观后感
2015/06/03 职场文书
工商行政处罚决定书
2015/06/24 职场文书
python超详细实现完整学生成绩管理系统
2022/03/17 Python
Python如何加载模型并查看网络
2022/07/15 Python