reduce()接收一个匿名函数function (prev, cur)作为参数;第二个参数可以选填,如果选填将作为prev的初始值,则第一次遍历前,cur为数组的第一个元素。
当prev没有设置初始值时,在第一次遍历中,prev为数组第一个元素值,cur为数组第二个元素值;在第一次遍历后,prev为数组第一、第二元素的相加值,cur为数组第三个元素值。prev记录的是数组遍历过程中累加的值。
reduce用法
参考博客:https://www.jianshu.com/p/541b84c9df90
var arr = [1, 2, 3, 1]
// 计算数组的和
var sum = arr.reduce(function (prev, cur) {
return prev + cur
}, 0)
console.log(sum)
// 计算数组中的最大值
var max = arr.reduce(function (prev, cur) {
return Math.max(prev, cur)
})
console.log(max)
// 数组去重
var newArr = arr.reduce(function (prev, cur) {
prev.indexOf(cur) === -1 && prev.push(cur)
return prev
}, [])
console.log(newArr)
2019-10-12补充:数组对象计算最大值
let arr = [
{date: "09月12日", count: 1},
{date: "09月17日", count: 1},
{date: "09月22日", count: 0},
{date: "09月27日", count: 2},
{date: "10月02日", count: 0},
{date: "10月07日", count: 0},
{date: "10月12日", count: 0}
]
let maxItem = arr.reduce((prev, cur) => {
return prev.count > cur.count ? prev : cur
})
console.log(maxItem.count)