高阶函数之reduce

        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)

 

posted @ 2020-07-09 15:12  gsq1998  阅读(209)  评论(0编辑  收藏  举报