zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    取得窗口大小和窗口位置兼容所有浏览器的js代码
    一个简单易用的导出Excel类
    如何快速启动chrome插件
    网页表单设计案例
    Ubuntu下的打包解包
    The source file is different from when the module was built. Would you like the debugger to use it anyway?
    FFisher分布
    kalman filter
    Group delay Matlab simulate
    24位位图格式解析
  • 原文地址:https://www.cnblogs.com/xiaoli52qd/p/7392700.html
Copyright © 2011-2022 走看看