reduce实现数组求和

reduce实现数组求和对于实现数组求和,我们常用的思路是通过for、while,对数组进行迭代,依次将他们的值加起来,下面列举常用的两种方法第一种:vararr=[1,2,3,4,5,6];Array.prototype.sum=function(){varsumResult=0;for(vari=0;i<this.lengt…

对于实现数组求和,我们常用的思路是通过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实现数组求和下面就用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

转载于:https://www.cnblogs.com/xiaoli52qd/p/7392700.html

今天的文章reduce实现数组求和分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/9977.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注