let arrone = [1, 2, 3, 4]
let arrtwo = [{ age: 1 }, { age: 2 }, { age: 3 }]
let arrthree = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
let arrfour = [1, 2, 1, 2, 3, 4, 4, 5, 5, 5, 66, 6, 8]
//1:用作单数组数字累加器
let newonearr = arrone.reduce((a, b) => a + b, 0) //这里的首次参数c可以不加
// console.log(newonearr) 0+1+2+3+4
//2:用作数组对象累加
let c = 0;
let sum = arrtwo.reduce((a, b) => {
return a + b.age; //注意点1是a是上一次的值(所以a不能是a.age 否则会报错),第一次遍历的时候就是c
}, c) //注意点2 是这个c是要传入的 是作为第一次的a作为相加 不传会报错
// console.log(sum) // logs 6
//3:将二维数组转化为一位数组
let erweizhuanyiwei = arrthree.reduce((a, b) => a.concat(b), [])
// console.log(erweizhuanyiwei)
//4:计算数组中每个元素出现的次数
let cishu = arrfour.reduce((a, b) => {
//第一项是{} 判断b是否在arrfour中 有的话 键值+1
if (b in a) {
a[b]++
}else{ //如果没有这个属性,那么就添加这个键 并赋值1
a[b]=1
}
return a //最后把a return出去
}, {})
// console.log(cishu)