JavaScript array.reduce()
方法通过执行回调函数对数组元素进行计算,例如求和,找出数组的差异等。
语法
arr.reduce(callback(accumulator, currentValue, currentIndex, array), initialValue)
参数
回调函数callback
有以下四个参数:
- accumulator:累加回调函数的返回值,在最后一次调用函数时返回。
- currentValue:是当前正在处理的元素的值。
- currentIndex: 它是一个可选参数,用于保存正在处理的当前元素的索引值。如果我们提供初始值,则索引将从 0 开始。否则从 1 开始。
- array:它也是可选的,源数组。
initialValue:它是第一次调用回调函数时使用的第一个参数值。
返回值
它返回回调函数处理后的单个值。
注意事项:
- 如果我们不提供初始值,回调函数将以索引为 1 开始执行,它会跳过第一个索引。虽然,如果提供了 intialValue,执行将从 0 开始。
- 如果提供了一个没有初始值的空数组,它将抛出一个 TypeError。
- 如果数组为空,但提供了initialValue,或者如果数组包含一个元素,但没有提供initialValue,则该元素将返回而不调用回调函数。
因此,提供初始值是安全且好的。
方法示例
让我们实现一些示例以更好地理解reduce()函数:
示例1
这里有一个简单的例子来总结数组元素并显示输出。
<html>
<head> <h5> Javascript Array 方法</h5> </head>
<body>
<script>
var arr=[2,3,1,5];
var a=arr.reduce(function (accumulator,currentValue) {
return accumulator+currentValue;
},0);
document.write("数组元素之和为: "+a);
</script>
</body>
</html>
输出:
数组元素之和为: 11
示例2
这是一个使用reduce()
方法显示数组元素差异的示例。
<html>
<head> <h5> Javascript Array 方法</h5> </head>
<body>
<script>
var a=[30,15,5];
document.write("数组元素的差异是: ");
document.write(a.reduce(reducer_func));
function reducer_func(net,n){
return net-n;
}
</script>
</body>
</html>
输出:
数组元素的差异是: 10
示例3
这是一个使用箭头函数对数组元素求和的示例。
<html>
<head> <h5> Javascript Array 方法</h5> </head>
<body>
<script>
var net=[3,2,5,1,7];
var calc=net.reduce(
(accumulator,currentValue)=>accumulator+currentValue,0);
document.write("数组元素的总数为: "+calc);
</script>
</body>
</html>
输出:
数组元素的总数为: 18
示例4
当数组只包含一个值时。
<html>
<head> <h5> Javascript Array 方法 </h5> </head>
<body>
<script>
var net=[3]; //一个元素的数组
var calc=net.reduce(
(accumulator,currentValue)=>accumulator+currentValue);
document.write("数组元素的总数为: "+calc);
</script>
</body>
</html>
输出:
数组元素的总数为: 3
因此,在存在单个数组元素的情况下,无需创建回调函数。此外,因为当数组包含单个元素时,不会调用回调。
我们可以使用数组 reduce() 方法执行几个示例。