定义和用法

reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。

注意: reduce() 对于空数组是不会执行回调函数的。

浏览器支持

方法 Chrome Edge Firefox Safari Opera
reduce() Yes 9.0 3.0 4 10.5

语法

array.reduce(function(total, currentValue, currentIndex, arr), initialValue)

基本用法

基本的数值运算,例如求和:

var numbers = [65, 44, 12, 4];
numbers.reduce(function(total, currentValue) {
return total + currentValue;
});

运行一下

进阶应用

数组转换为对象

var arr = [{
n: "小明",
a: 18,
s: "男"
}, {
n: "小红",
a: 17,
s: "女"
}];
arr.reduce(function(total, currentValue, currentIndex) {
total[currentValue.n] = {
age: currentValue.a,
sex: currentValue.s
};
return total;
}, {})

运行一下

链式调用

let pipe = (function() {
return function(value, context) {
context = context || window;
let methods = [];
let oproxy = new Proxy({}, {
get(target, methodName) {
if(methodName === 'get') {
return methods.reduce((val, fn) => fn(val, context), value);
} else {
methods.push(context[methodName]);
return oproxy;
}
}
});
return oproxy;
}
})(); let obj = {
double: val => val * 2,
pow: val => val * val }
pipe(4, obj).double.pow.get //64

运行一下

copyright @ xmwarrior

最新文章

  1. Java学习笔记__异常机制_try_catch_finally_return执行顺序
  2. MySQL索引的设计和使用
  3. 『TCP/IP详解——卷一:协议』读书笔记——16
  4. java系统性能分析
  5. Hibernate Synchronizer3——一个和hibernate Tool类似的小插件之使用方法
  6. [转载]我们可以用SharePoint做什么
  7. HTML5新增的属性和废除的属性
  8. GDI+ 对象释放崩溃的问题
  9. 织梦dedecms|文章页通用标签
  10. SDL 在指定窗口中绘图
  11. HBase 查询导致RegionServer OOM故障复盘
  12. dma子系统 dmac
  13. java线程自带队列的使用以及线程阻塞
  14. vs2015和Oracle在一起时的Shit问题
  15. Spring Security OAuth笔记
  16. MTK 自定义按键添加广播
  17. .pages怎么在windows上打开?Windows下打开在Mac中编辑的.pages文件方法
  18. js Promise fetch demo
  19. s3c2410串口笔记
  20. sql的存储过程实例--循环动态创建表

热门文章

  1. CodeForces 988 F Rain and Umbrellas
  2. atcoder C - Snuke and Spells(模拟+思维)
  3. hdu6376 度度熊剪纸条 思维
  4. 杭电多校第九场 HDU6415 Rikka with Nash Equilibrium dp
  5. BZOJ-2535 航空管制 toposort
  6. Codeforces Round #483 (Div. 2) B. Minesweeper
  7. codeforces 811 C. Vladik and Memorable Trip(dp)
  8. hadoop之数据倾斜
  9. 【1】KNN(K-nearest neighbors algorithm)
  10. 树莓派4B 安装CentOS