繁体   English   中英

在Javascript中轻松添加值数组(例如,无循环)

[英]Easily add an array of values in Javascript (eg. without loops)

我想知道是否有人知道在javascript中添加值数组的好方法?

我提出了:

var myArray = [1,2,3,4,5];

var total = eval(myArray.join("+"));

这很好而且简短,但我猜测从num到string然后evaling回到一个数字是一个缓慢的方式获得总数。

最合适的方法是使用[ Array.prototype.reduce ]( https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/reduce )函数,这是ECMAScript中语言的补充。第5版:

var myArray = [1,2,3,4,5],
    total   =  myArray.reduce(function (curr, prev) { return curr + prev; });

alert(total);

当然,旧版浏览器不支持此功能,因此您可能希望在代码中包含兼容性实现

更新 - 结合安迪的方法和原型方法......

Array.prototype.sum = function(){
    return this.reduce(function(a,b) {return a+b} );
}

现在所有数组都有sum方法。 例如var total = myArray.sum();

原始答案......

我会受到诱惑

var myArray = [1,2,3,4,5];
var sum     = 0;

for (var i=0, iMax=myArray.length; i < iMax; i++){
    sum += myArray[i];
};

alert(sum);

如果你经常使用它,就把它分解成一个函数。 甚至更整洁,原型......

Array.prototype.sum = function(){
    for(var i=0, sum=0, max=this.length; i < max; sum += this[i++]);
    return sum;  
}

var myArray = [1,2,3,4,5];

alert(myArray.sum());

DZone Snippets提供

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM