reduce是一个异常强大的数组方法。他可以遍历数组并且记录上一个元素的值。
具体的语法如下
reduce方法接收两个参数。
第一个参数是一个函数。这个函数接收两个参数。第一个参数为上一次遍历的元素的值,第二个参数为当前要遍历的元素的值
第二个参数是一个任意基本类型的值,代表着默认的初始值,即第一次遍历的时候的初始值,如果不传这个参数,则默认是数组的第一个元素
function arrfun(total, lastItem) {
return total
}
let sum = list.reduce(arrfun)
数组求和
let list = [1, 24, 30, 5, 7, 12]
function arrfun(total, lastItem) {
return total += lastItem
}
let sum = list.reduce(arrfun)
console.log(sum)
数组去重
这里给第二个参数指定了一个空数组,即total第一次是一个空数组。用来存储最终去重后的数据
let list2 = [1, 2, 2, 3, 4, 5, 5]
let sum2 = list2.reduce((total, item) => {
if (total.indexOf(item) == -1) {
total.push(item)
}
return total
}, [])
console.log(sum2)
求数组中最大值
let list3 = [1, 24, 30, 5, 7, 12]
let sum3 = list3.reduce((total, item) => {
return total = total <= item ? item : total
})
console.log(sum3)
合并去重数组
let list4 = [1, 5, 23, 44]
let list5 = [1, 2, 3, 4]
let sum4 = [...list4, ...list5].reduce((total, item) => {
if (total.indexOf(item) == -1) {
total.push(item)
}
return total
}, [])
console.log(sum4)
网友评论