当我们需要计算整个数组的值的时候,最先想到的方式是循环数组,然后逐个相加减:
const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
var sum0 = 0;
for (let index = 0; index < arr.length; index++) {
sum0 = sum0 + arr[index];
}
console.log(sum0) // 55
ES5新增的reduce()和reduceRight(),来归并数组【也可以说是迭代数组的所有项,最后返回一个值】,两个方法就直接导出我们想要的结果了。这两个方法的一个区别就是:
reduce(),是从数组的第一项开始,一项一项的遍历,直到最后一项;
reduceRight(),从数组的最后一项开始遍历,直到第一项;
最后,这两个方法接收两个参数:
参数1:在每一项上调用的函数【必选】;
参数2:作为归并基础的初始值【可选】。
参数1是一个函数,它可接收4个参数:
arr.reduce((pre, cur, index, arr) => {
// console.log(index); // 012345678
// console.log(arr)
return pre + cur
})
pre:上一个值
cur:当前值
index:索引
arr:数组对象
如何使用??源码如下:
const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
var sum0 = 0;
for (let index = 0; index < arr.length; index++) {
sum0 = sum0 + arr[index];
}
console.log(sum0)
const sum = arr.reduce((pre, cur, index, arr) => {
// console.log(index); // 012345678
// console.log(arr)
return pre + cur
});
console.log(sum) // 55
const sum1 = arr.reduceRight((pre, cur, index, arr) => {
console.log(index)//876543210
return pre + cur
})
console.log(sum1)