Array.prototype.reduce

let arr = [1, 2, 3, 4],
sum = arr.reduce((prev, curr, index, arr) => {
return prev + curr;
});
;
console.log(sum); // 10

[].reduce 回调入参:

1- prev 第一项的值或者是上一次的叠加的结果值(这个值可以手动设置)

2- curr 当前会参与叠加的项

3- index 当前的索引

4- 数组本身

上面例子的扩展-- 第n项之后的和:

let arr = [1, 2, 3, 4],
sum = arr.reduce((prev, curr, index, arr) => {
if(index > 2) {
return prev + curr;
} else {
return prev;
}
}, 0);
;

求成绩和

var result = [
{
subject: 'math',
score: 88
},
{
subject: 'chinese',
score: 95
},
{
subject: 'english',
score: 80
}
]; var sum = result.reduce((prev, curr) => {
return prev + curr.score;
}, 0);

加权成绩和

var result = [
{
subject: 'math',
score: 88
},
{
subject: 'chinese',
score: 95
},
{
subject: 'english',
score: 80
}
];
var dis = {
math: 0.5,
chinese: 0.3,
english: 0.2
}; var qsum = result.reduce(function(prev, cur) {
return cur.score * dis[cur.subject] + prev;
}, 0);

统计字符个数

var arrString = 'sfaskdflaefaf';
arrString.split('').reduce(function(res, cur) {
res[cur] ? res[cur]++ : res[cur] = 1
return res;
}, {});

字符去重

var arrString = 'sfaskdflaefaf';
arrString.split('').reduce((x => {
let res = {};
return (prev, curr) => {
if(!res[curr]) {
res[curr] = true;
return prev + curr;
}
return prev;
};
})(), '');

字符串反转:

var str = 'sfaskdflaefaf';
str.split('').reduce((prev, curr) => {
return curr + prev;
}, '');

按一定规则转换数组:

[1, 2].reduce(function(res, cur) {
res.push(cur + 1);
return res;
}, []);

小结: 一般我们会提供 prev 的默认值来获得期望的返回, 这个方法可以在满足一定规则的逻辑下让代码书写的更为优雅, 与之相似的另外一个方法是 reduceRight, 该方法倒序遍历数组.

最新文章

  1. vagrant学习笔记
  2. SQLServer系统监控
  3. Android学习二:Http操作
  4. SharePoint 2010 External List Paging – Server Side
  5. JAVA算法系列 冒泡排序
  6. 禁用Linux bash rm --force
  7. 内存映射+远线程 调用游戏CALL
  8. BZOJ 1050 旅行
  9. Xshell中文编码的设置
  10. 【.NET-EF】Entity Framework学习笔记1 - VS2013没有EF的解决方法
  11. Python学习_10__python2到python3
  12. poj 2653 线段与线段相交
  13. 手机touch事件及参数【转】(自己懒得写了,找了一篇摘过来)
  14. Getting Started with Word2Vec
  15. .NET MVC5+ Dapper+扩展+AutoFac自动注入实现
  16. 【前端】javascript实现鼠标跟随特效
  17. 各个系统Docker安装
  18. jenkins构建启动失败
  19. BFS+状态压缩DP+二分枚举+TSP
  20. 批量提取图片主要3个颜色匹配中文名字并写入到excel设置对应颜色的背景

热门文章

  1. MYSQL数据导出与导入,secure_file_priv参数设置
  2. maven 坐标获取方式
  3. nyoj 952 : 最大四边形 (计算几何)
  4. koa2基础
  5. 最全面的H5的背景音效素材(经过实践),分享给你!!!
  6. Quick BI的SQL传参建模可以用在什么场景
  7. JDK,JRE与JVM浅析
  8. Python_021(内置方法讲解二)
  9. 【CF1249D】Too Many Segments(贪心,set,vector)
  10. DAY 4 下午