让前端飞

数组之reduce()方法

2018-10-25  本文已影响3人  jia林

reduce()方法将指定的函数将数组元素进行组合,生成单个值,可以实现累加

一、reduce参数

1、第一个参数是方法,方法里的参数:

@param result 运算结果
@param current 当前值
@param currentIndex 当前值得索引值
@param arr 自身数组

2、第二个参数可选,是一个传递给函数的初始值。如果第二个参数有值,那么作为运算的初始值参与函数运算,如果第二个参数没有值,那么数组中的首位将作为函数运算的初始值,参与函数运算的数组其他位向后平移一位。

    var arr = [2,3,4,5,6];
    /*  reduce参数
        @param result 预算结果
        @param current 当前值
        @param currentIndex 当前值得索引值
        @param arr 自身数组
    */
    var b = arr.reduce(function(result,current,currentIndex,arr){
        console.log(result,current,currentIndex,arr,'param');
    /*  第二个参数当做初始值进行运算:
        10 + 2 ---> 12
        12 + 3 ---> 15
        15 + 4 ---> 19
        19 + 5 ---> 24
        24 + 6 ---> 30
        */
        return result + current
    },10);
    var c = arr.reduce(function(result,current,currentIndex,arr){
        console.log(result,current,currentIndex,arr,'param');
    /*  第二个参数没有的话,将数组中的首位将作为函数运算的初始值,参与函数运算的数组其他位向后平移一位:
        10 + 2 ---> 12
        12 + 3 ---> 15
        15 + 4 ---> 19
        19 + 5 ---> 24
        24 + 6 ---> 30
        */
        return result + current
    });
    console.log(b);  //30
    console.log(c);  //20
二、自己封装reduce()
    Array.prototype.MyReduce = function(func,init){
        var len = this.length;
        var prev = init;
        var i = 0;
        if(init == undefined){
            prev = this[0];
            i = 1;
        }
        for(i;i<len;i++){
            prev = func(prev,this[i],i,this)
        }
        return prev
    }

三、练习

获得当前时间并将其转换成字符串形式

var date = new Date();
    var arr = [date.getHours(),date.getMinutes(),date.getSeconds()];
    var result = arr.reduce(function(result,current){
        /*用0拼接,主要是用于小于10的数字,
        slice裁剪主要是截取最后2位
        01  slice 01
        010 slice 10*/
        return result + ('0'+current).slice(-2)
    },"");
    console.log(result)
上一篇 下一篇

猜你喜欢

热点阅读