小生愛

    

        let arr = [1, 2, 3, 4]
        // find(n, i, arr) 找出第一个符合条件的数组成成员 接收3个参数
        // 查找到第一个符合的成员 退出
        // 输出 2
        c( arr.find((n, i, arr) => n >1) )
        



        // findIndex(value, index, arr) : 查找第一个符合元素的位置
        // 查找到符合元素 直接退出
        // 未查找到 返回 -1
        let arr = [1, 5, 10, 15]
        c( arr.findIndex((value, i, arr) => value > 20) )




        let arr = [1, 2, 3, 4, 5]
        /**
         *  recuce(fn(prev, next, i), init)
         *  @ fn: 回调函数 如果没给return 则prev只有第一次有值 所以必须有return
                prev: 如果没给初始值 默认是数组的第一个值
                next: 数组的下一个值
                i: 迭代的次数
         *  @ init: 初始值 (如果米给初始值 默认取数组的第一个值)
        */
        arr.reduce((prev, next, i) => {
            // 输出 1, 3, 6, 10 迭代了4次
            log(prev, next, i)
            // 这里return 必须给
            return prev + next
        })

        let result = [
            {
                subject: 'm1',
                score: 88,
            },
            {
                subject: 'm2',
                score: 98,
            },
            {
                subject: 'm2',
                score: 95,
            },
        ]

        // 默认初始值给了数字类型 prev初始值是 0 迭代了3次
        result.reduce((prev, next, i) => {
            log(prev, next, i)
            return next.score + prev
        }, 0)

        // 默认值给了 {} prev初始值是 {}
        let arrString = 'abcdeaabc'

        arrString.split('').reduce((prev, next) => {
            prev[next] ? prev[next]++ : prev[next] = 1
            return prev
        }, {})

        // 默认初始值给了 [] prev 初始值是 []
        let sum2 = [1, 2].reduce((prev, next) => {
            prev.push(next + 1)
            return prev
        }, [])