数组方法reduce的基本使用
reduce可以将数组元素计算为一个值(从左到右)。
如果没有提供 initialValue,那么accumulator取数组中的第一个值,currentValue/ currentIndex 取数组中的第二个值。
即:
没有初始值:array.reduce(preVal,currentVal)=>preVal+currentVal)
有初始值:
array.reduce((accumulator,currentVal,currentIndex,array))=>{
return accumulator+currentVal
},
// 第二个参数:accumulator 初始值
0)
应用场景
数组求和
arr.reduce((accumulator,currentVal)=>{ return accumulator+currentVal },0)
具体项目案例应用
计算选中购物车商品总数/总价:
getters: {
isAllSelect(state) {
return state.cartList.every(item => item.goods_select)
},
selectCartList(state) {
return state.cartList.filter(item => item.goods_select)
},
selectCartListCount(state, getters) {
return getters.selectCartList.reduce((sum, item) => {
return sum + item.goods_count
}, 0)
},
selectCartListPrice(state, getters) {
return getters.selectCartList.reduce((sum, item) => {
return sum + item.goods_count * item.goods_price
}, 0)
}
}
处理报错
TypeError: Reduce of empty array with no initial value at Array.reduce (<anonymous>)
解决:给reduce方法的第二个参数(总和初始值)