reduce()方法
reduce() 方法接收一个函数 callback 作为累加器(accumulator),数组中的每个值(从左到右)开始合并,最终为一个值。
语法
array.reduce(callback[, initialValue])
reduce() 方法接收 callback 函数,而这个函数包含四个参数:
function callback(accumulator, currentValue, currentIndex, array){}
accumulator: 上一次调用回调返回的值,或者是提供的初始值(initialValue)currentValue: 数组中当前被处理的数组项currentIndex: 当前数组项在数组中的索引值array: 调用reduce()方法的数组
而initialValue作为第一次调用callback函数的第一个参数。
reduce() 方法为数组中的每一个元素依次执行回调函数 callback,不包括数组中被删除或从未被赋值的元素,接受四个参数:初始值(或者上一次回调函数的返回值),当前元素值,当前索引,调用 reduce() 的数组。
回调函数第一次执行时,accumulator 和 currentValue 可以是一个值,如果 initialValue 在调用 reduce() 时被提供,那么第一个 accumulator 等于 initialValue ,并且 currentValue 等于数组中的第一个值;如果 initialValue 未被提供,那么 accumulator 等于数组中的第一个值,currentValue 等于数组中的第二个值。
var arr = [0,1,2,3,4];
arr.reduce(function (accumulator, currentValue, currentIndex, array) {
return accumulator+ currentValue;
}); // 10
reduceRight()方法
reduceRight() 方法的功能和 reduce() 功能是一样的,不同的是 reduceRight() 从数组的末尾向前将数组中的数组项做累加。
reduceRight() 首次调用回调函数 callback 时,accumulator 和 currentValue 可以是两个值之一。如果调用 reduceRight() 时提供了 initialValue 参数,则 accumulator 等于 initialValue,currentValue 等于数组中的最后一个值。如果没有提供 initialValue 参数,则 prevValue 等于数组最后一个值, currentValue 等于数组中倒数第二个值。
var arr = [0,1,2,3,4];
arr.reduceRight(function (accumulator, currentValue, currentIndex, array) {
return accumulator + currentValue;
}); // 10
练习:不要使用JavaScript内置的parseInt()函数,利用map和reduce操作实现一个string2int()函数:
'use strict';
function string2int(s) {
return s.split("").map(function(item) {
return item * 1;
}).reduce(function(x, y) {
return x * 10 + y;
});
}
本文详细介绍了JavaScript数组方法reduce()与reduceRight()的工作原理及应用实例,reduce()方法从数组头部开始处理元素,reduceRight()则从数组尾部开始处理。通过具体的示例,展示了如何使用这两个方法进行数组元素的累加操作。
324

被折叠的 条评论
为什么被折叠?



