![](/img/trans.png)
[英]How to add a CSS class to a javascript canvas element (eg. fillRect() )
[英]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());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.