函数定义:
reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
对空数组是不会执行回调函数的。
语法:
参数:
用法简单实例:
1. 累计和 ==>> 初始值为数字
<script type="text/javascript">
const arr = [1,2,3,4,5];
const total = arr.reduce(function(sum,item){
return sum + item
}, 0);
console.log('======total',total); //15
</script>
2. 合并数组 ==>> 初始值为数组
<script type="text/javascript">
const arr = [[1,2],[3,4],[5,6]];
const total = arr.reduce(function(newArr,itemArr){
return newArr.concat(itemArr)
}, []);
console.log('======total',total); //[1, 2, 3, 4, 5, 6]
</script>
对reduce的理解:
1. reduce(callback,initiaValue)会传入两个变量,回调函数(callback)和初始值(initiaValue)。
2. 假设回调函数有4个传入参数,prev和next,index和array。 Prev和next是你必须要了解的。
index: 当前元素的索引;array:当前元素所属的数组对象
3. 当没有传入初始值时,prev是从数组中第一个元素开始的,next数组是第二个元素。
4. 但是当传入初始值(initiaValue)后,第一个prev将是initivalValue,next将是数组中的第一个元素。
==>> 没有初始值
<script type="text/javascript">
const arr = ["aaa", "bbb", "ccc"];
function cycle(){
return arr.reduce(function(prev,next){
console.log("prev:",prev);
console.log("next:",next);
return prev; //==>>把初始值保存下来,否则下一个循环没有初始值
});
}
cycle();
</script>
结果:
==>> 传入初始值
<script type="text/javascript">
const arr = ["aaa", "bbb", "ccc"];
function cycle(){
return arr.reduce(function(prev,next){
console.log("prev:",prev);
console.log("next:",next);
return prev; //==>>把初始值保存下来,否则下一个循环没有初始值
},'111');
}
cycle();
</script>
结果:
文章仅为本人学习过程的一个记录,仅供参考,如有问题,欢迎指出