对于实现数组求和,我们常用的思路是通过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
转载于:https://www.cnblogs.com/xiaoli52qd/p/7392700.html
今天的文章reduce实现数组求和分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/9977.html