JavaScript reduce() 方法
1.定义和用法
reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减(是个数递减,不是值),最终计算为一个值。
reduce() 可以作为一个高阶函数,用于函数的 compose(组成)。
注意: reduce() 对于空数组是不会执行回调函数的。
2.浏览器支持
表格中的数字表示支持该方法的第一个浏览器版本号。
方法 | 谷歌 | IE | 火狐 | safari | 欧朋 |
---|---|---|---|---|---|
reduce() | Yes | 9.0 | 3.0 | 4 | 10.5 |
3.语法
array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
4.参数
参数 | 描述 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
function(total,currentValue, index,arr) | 必需。用于执行每个数组元素的函数。 函数参数:
| ||||||||||
initialValue | 可选。传递给函数的初始值 |
5.技术细节
返回值: | 返回计算结果 |
---|---|
JavaScript 版本: | ECMAScript 3 |
6.实例
6.1 作为累加器,数组中的每个值(从左到右)开始缩减(是个数递减,不是值)
var numbers = [65, 44, 12, 4];
function getSum(total, num) {
console.log(total+num)
return total + num;
}
numbers.reduce(getSum);
6.2 四舍五入后计算数组元素的总和:
<button onclick="myFunction()">点我</button>
<p>数组元素之和: <span id="demo"></span></p>
<script>
var numbers = [15.5, 2.3, 1.1, 4.7];
function getSum(total, num) {
return total + Math.round(num);
}
function myFunction(item) {
document.getElementById("demo").innerHTML = numbers.reduce(getSum, 0);//这里的0,就是初始值,从0开始相加。如:第一步:0+15.5
}
</script>
6.3 计数器
const countOccurrences = (arr, value) => arr.reduce((a, v) => v === value ? a + 1 : a + 0, 0);
countOccurrences([1, 2, 3, 2, 2, 5, 1], 1);
ps:当参数value===v( arr )时,给上一次的加和+1,即,a+1。否则,还是a 。
循环数组,每遇到一个值与给定值相等,即加1,同时将加上之后的结果作为下次的初始值。
未完。。。