是否有可能使用这种方法实现数组乘法

时间:2012-04-25 11:38:01

标签: javascript

您好我正在尝试以下方法来计算数字数组的乘积。

 var str = [1,2,3];
 alert(str.join('*') * 1);​

但它返回NaN

还有其他方法吗?

2 个答案:

答案 0 :(得分:4)

理想情况是使用Array.reduce

alert(str.reduce(function (acc, curr) { return acc * curr; }, 1));

See it in action

在版本9之前的IE中不提供

Array.reduce,但应该有大量的实现可供查找(例如this one)。

答案 1 :(得分:1)

您正在寻找的是将字符串作为表达式进行评估:

alert(eval(str.join('*')));​

然而,与往常一样,如果您使用eval,您应该认真地问自己是否做错了。

考虑改为循环:

var result = 1;
for (var i = 0; i < str.length; i++) result *= str[i];
alert(result);