我想知道是否有人知道在javascript中添加值数组的好方法?
我想出了:
var myArray = [1,2,3,4,5];
var total = eval(myArray.join("+"));
哪个好又短,但我猜是从num到string然后评估回到一个数字是获得总数的一种缓慢方式。
答案 0 :(得分:4)
最合适的方法是使用[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);
当然,旧浏览器不支持此功能,因此您可能希望在代码中包含compatibility implementation。
答案 1 :(得分:2)
更新 - 结合Andy的方法和Prototyping方法......
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());