这篇文章将为大家详细讲解有关js中如何使用reduce,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
reduce语法
arr.reduce(callback(accumulator, currentValue[, index[, array]])[, initialValue])
参数说明
reducer函数需要接收4个参数分别是
callback
Accumulator
Current Value
Current Index
Source Array
initialValue
返回值
一些reduce常用方法
数组里所有元素的和
const arr = [1, 2, 3, 4];
const result = arr.reduce((acc, cur) => acc + cur)
console.log(result) // 10
计算数组中每个元素出现的次数
const nums = ['1', '1', '1', '2', '3'];
const countednums = nums.reduce((acc, cur) => {
if (cur in acc) {
acc[cur]++;
}
else {
acc[cur] = 1;
}
return acc;
}, {});
console.log(countednums); // {1: 3, 2: 1, 3: 1}
扁平化数组
const arr = [['a', 'b'], ['b', 'c'], ['d', 'e']]
const flatten = arr => {
return arr.reduce((acc, cur) => {
return acc.concat(cur)
}, [])
}
console.log(flatten(arr)); // ["a", "b", "b", "c", "d", "e"]
数组去重
const arr = [22,341,124,54,4,21,4,4,1,4,4];
const result = arr.sort().reduce((acc, cur) => {
if(acc.length === 0 || acc[acc.length-1] !== cur) {
acc.push(cur);
}
return acc;
}, []);
console.log(result); // [1, 124, 21, 22, 341, 4, 54]
求数组中最大值
const arr = [1, 2, 3, 5, 1]
let result = arr.reduce((acc, cur) => Math.max(acc, cur))
console.log(result)
按照顺序调用promise
这种方式实际上处理的是promise的value,将上一个promise的value作为下一个promise的value进行处理。
const prom1 = a => {
return new Promise((resolve => {
resolve(a)
}))
}
const prom2 = a => {
return new Promise((resolve => {
resolve(a * 2)
}))
}
const prom3 = a => {
return new Promise((resolve => {
resolve(a * 3)
}))
}
const arr = [prom1, prom2, prom3]
const result = arr.reduce((all, current) => {
return all.then(current)
}, Promise.resolve(10))
result.then(res => {
console.log(res);
})
关于“js中如何使用reduce”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。