接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
function(total,currentValue, index,arr) total: 必需。初始值, 或者计算结束后的返回值。 currentValue: 必需。当前元素 currentIndex: 可选。当前元素的索引 arr: 可选。当前元素所属的数组对象 一般最常用的是前两个数.
1. 简单使用,数组求和
const arr = [1, 2, 3, 4, 5] const sum = arr.reduce((pre, item) => { //pre为上一次回调函数返回值 //item为当前值 return pre + item; }, 0); console.log(sum) //15
2. 数组最大值
const arr = [23,13,34,126]; const max = arr.reduce((pre,cur) => { return Math.max(prev,cur); }); // 126
3.计算字符串中每个字母的出现次数
const str = ‘orangeapple‘; const obj = str.split(‘‘).reduce((pre,item) => { pre[item] ? pre[item] ++ : pre[item] = 1; return pre; },{}); //初始值为{}, 判断对象中是否存在当前元素的属性,不存在就新增且设置值为1 console.log(obj) //{o: 1, r: 1, a: 2, n: 1, g: 1, …}
4. 数组去重
const oriArr = [1, 2, 2, 4, 5, 5]; const arr = oriArr.reduce((prev, cur) => { return prev.includes(cur) ? prev : prev.concat(cur); }, []);
或者:
const arr = oriArr.reduce((prev, cur) => { prev.indexOf(cur) === -1 && prev.push(cur); return prev; },[]); console.log(arr); //[1, 2, 4, 5]
5. 数组降维
const oriArr = [[1,2],[3,4],[5,6]]; const arr = oriArr.reduce((prev, cur) => prev.concat(cur),[]); console.log(arr); //[1, 2, 3, 4, 5, 6]
原文:https://www.cnblogs.com/applesky/p/14687077.html