数组遍历—reduce

语法

  /**
     * @param callback {function} 第一个参数是一个回掉函数 不可省略
     * @param initialValue 初始化值,是给callback函数第一个参数赋值用的
     * @return 返回计算结果
     */
    Array.prototype.reduce(callback,initialValue)
    /**
     * 作为reduce的回掉函数
     * @param total 必需。初始值, 或者计算结束后的返回值,
     * 如果initialValue存在,则将initialValue赋值给total,反之则是将数组第一个元素赋值给total
     * @param currentValue 必需。当前元素 。
     * 如果initialValue存在,currentValue是从第一个数组元素开始,反正从第二个数组元素开始,第一个元素用于给total赋值
     * @param currentIndex 可选。当前元素的索引
     * @param arr 可选。当前元素所属的数组对象
     */
    function callback(total,currentValue,currentIndex,arr){}

用法

  1. 求和
    var arr=[1,2,3,4,5]
        function sum(arr){
            /**
             * 函数首先把arr第一项1 赋值给total,这时total=1,currentValue=2
             * 然后 进行 tatol+currentValue运算  即 1+2 把计算结果再次给total 赋值
             * 可以把 return total + currentValue 理解为 total= total + currentValue
             * 后面的以此类推  这样实现了一个累加过程。
             * 最后返回的是total的值,即1+2+3+4+5
             * 实现了一个求和
             */
            return arr.reduce(function (total,currentValue) {
                console.log(currentValue) // 从2开始遍历  1已经赋值给total
                return total + currentValue
            })
        }
        sum(arr) //15
  2. 求最大值
    var arr2=[2,5,3,9,1,14,6,7]
        function maxNum(arr){
            return arr.reduce(function (max,currentValue){
                //  只需要记住return的值  是赋值给第一个参数的
                return max>currentValue? max:currentValue
            })
        }
        maxNum(arr2) //14

  总结: 在日常的项目中 reduce使用的非常少,个人觉得只要理解其运行的过程就可以了。

猜你喜欢

转载自www.cnblogs.com/little-oil/p/12145487.html
今日推荐