es5 reduce()
2016-05-07 15:43
239 查看
reduce
1.8中才引入的,中文意思为“减少”、“约简”。不过,从功能来看,我个人是无法与“减少”这种含义联系起来的,反而更接近于“迭代”、“递归(recursion)”,擦,因为单词这么接近,不会是ECMA-262 5th制定者笔误写错了吧~~
此方法相比上面的方法都复杂,用法如下:
说明:
因为
从而
最后两个参数为索引值
以下为循环执行过程:
有了
reduce是JavaScript
1.8中才引入的,中文意思为“减少”、“约简”。不过,从功能来看,我个人是无法与“减少”这种含义联系起来的,反而更接近于“迭代”、“递归(recursion)”,擦,因为单词这么接近,不会是ECMA-262 5th制定者笔误写错了吧~~
此方法相比上面的方法都复杂,用法如下:
array.reduce(callback[, initialValue])
callback函数接受4个参数:之前值、当前值、索引值以及数组本身。
initialValue参数可选,表示初始值。若指定,则当作最初使用的
previous值;如果缺省,则使用数组的第一个元素作为
previous初始值,同时
current往后排一位,相比有
initialValue值少一次迭代。
var sum = [1, 2, 3, 4].reduce(function (previous, current, index, array) { return previous + current; }); console.log(sum); // 10
说明:
因为
initialValue不存在,因此一开始的
previous值等于数组的第一个元素。
从而
current值在第一次调用的时候就是
2.
最后两个参数为索引值
index以及数组本身
array.
以下为循环执行过程:
// 初始设置 previous = initialValue = 1, current = 2 // 第一次迭代 previous = (1 + 2) = 3, current = 3 // 第二次迭代 previous = (3 + 3) = 6, current = 4 // 第三次迭代 previous = (6 + 4) = 10, current = undefined (退出)
有了
reduce,我们可以轻松实现二维数组的扁平化:
var matrix = [ [1, 2], [3, 4], [5, 6] ]; // 二维数组扁平化 var flatten = matrix.reduce(function (previous, current) { return previous.concat(current); }); console.log(flatten); // [1, 2, 3, 4, 5, 6]
相关文章推荐
- iOS收到Push后播放声音和震动
- DAY1 linux 50条命令
- Tomcat在Linux下的安装与配置
- HDU4578 Transformation 线段树
- 从SVN导出指定版本号之间修改的文件
- 浅谈 变量以及函数的声明以及定义,以及对extern “C”的理解
- 【机房合作】职责链模式计算消费时间
- java double类型保留两位小数4种方法
- jQuery Mobile 中的 $
- JAVA面向对象API————List的子类特点概述
- 11周 4 项目 - 教师兼干部类
- html基础知识
- 最简单的CocoaPods安装方法
- Jmeter之接口测试实战项目运用操作(七)
- MAC系统用RSA 对数据进行加密解密
- nyoj 38 Prim裸题
- 图形界面之:菜单
- web.xml 中的listener、 filter、servlet 加载顺序及其详解
- JavaScript闭包
- Jython:java调用python文件之第三方包路径问题