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