• reduce实现数组求和


    对于实现数组求和,我们常用的思路是通过for、while,对数组进行迭代,依次将他们的值加起来,下面列举常用的两种方法

    第一种:

    var arr = [1,2,3,4,5,6]; 
    Array.prototype.sum = function (){ 
        var sumResult = 0; 
        for (var i = 0; i < this.length; i++) { 
          sumResult += parseInt(this[i]); 
        } 
        return sumResult; 
    } 
    arr.sum(); 

    第二种:

    var arr = [1,2,3,4,5,6]; 
    Array.prototype.sum = function () { 
        var sumResult = 0; 
        var i = this.length; 
        while (i--) { 
            sumResult += parseInt(this[i]); 
        } 
        return sumResult; 
    } 
    arr.sum();

    经时间对比验证,此两种方法耗时较多。

    安利一种新方法,reduce方法。

    对数组中的所有元素调用指定的回调函数。该回调函数的返回值为累积结果,并且此返回值在下一次调用该回调函数时作为参数提供。

    语法: array1.reduce(callbackfn[, initialValue])

    reduce()方法接收callbackfn函数,而这个函数包含四个参数:

      function callbackfn(preValue,curValue,index,array){}

    • preValue: 上一次调用回调返回的值,或者是提供的初始值(initialValue)
    • curValue: 数组中当前被处理的数组项
    • index: 当前数组项在数组中的索引值
    • array: 调用 reduce()方法的数组

    回调函数第一次执行时,preValue 和 curValue 可以是一个值,如果 initialValue 在调用 reduce() 时被提供,那么第一个 preValue 等于 initialValue ,并且curValue 等于数组中的第一个值;如果initialValue 未被提供,那么preValue 等于数组中的第一个值,`curValue等于数组中的第二个值。eg:

    var arr = [0,1,2,3,4]; 
    arr.reduce(function (preValue,curValue,index,array) { 
        return preValue + curValue; 
    }); 

    上个例子中的回调函数会被执行4次,

    下面就用reduce实现我们的数组求和: 

    var arr = [1,2,3,4,5,6]; 
    Array.prototype.sum = function (){ 
        var sumResult = 0; 
        return this.reduce(function (preValue, curValue) {
         return sumResult = preValue + curValue; 
        });
        return sumResult;
    } 
    console.log(arr.sum());

     结论:三种方法,经对比,reduce用时最短,性能最佳。

    参考文章:http://www.w3cplus.com/javascript/array-part-8.html

  • 相关阅读:
    利用 Memory Dump Diagnostic for Java (MDD4J) 分析内存管理问题
    Google开源软负载seesaw
    Commit can not be set while enrolled in a transaction
    del_cursor 批量删除游标
    java api 批量数据库操作
    eclipse invalid zip archive lib
    less,more,view一个文件时中文可以正常显示,可是VI却显示乱码呢?
    10-13 Zuul面试点之Cookie和特殊头信息处理
    10-12 Zuul面试点之Hystrix降级处理
    10-11 Zuul面试点之Hystrix整合
  • 原文地址:https://www.cnblogs.com/xiaoli52qd/p/7392700.html
Copyright © 2020-2023  润新知