嗨我正在尝试下面的方法来计算数组数组的乘积。是否有可能使用此方法实现数组乘法
var str = [1,2,3];
alert(str.join('*') * 1);
但它返回我NaN
。
有没有其他的方式来做到这一点。
嗨我正在尝试下面的方法来计算数组数组的乘积。是否有可能使用此方法实现数组乘法
var str = [1,2,3];
alert(str.join('*') * 1);
但它返回我NaN
。
有没有其他的方式来做到这一点。
理想的是使用Array.reduce
:
alert(str.reduce(function (acc, curr) { return acc * curr; }, 1));
Array.reduce
在版本9之前的IE中不可用,但应该有很多实现可供查找(例如this one)。
你在找什么正在评估字符串表达式:
alert(eval(str.join('*')));
然而,一如既往,如果您正在使用eval
你应该认真问自己,如果你正在做的事情是错误的。
只考虑循环,而不是:
var result = 1;
for (var i = 0; i < str.length; i++) result *= str[i];
alert(result);
谢谢回答。可悲的是我的应用程序也应该在IE6中工作。 :-( – Exception 2012-04-25 11:46:09
@SoI:如果您将'Array.prototype.reduce'的定义添加为您的JS代码的一部分,那么它在任何浏览器中都可以正常工作,否则,只需遍历该数组并继续。 – Jon 2012-04-25 11:48:50