3

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

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

但它返回我NaN

有没有其他方法可以做到这一点。

4

2 回答 2

4

理想的情况是使用Array.reduce

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

看到它在行动

Array.reduce在 IE 9 之前的版本中不可用,但应该有很多实现可以找到(例如这个)。

于 2012-04-25T11:40:33.133 回答
1

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

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

但是,与往常一样,如果您正在使用,eval您应该认真问自己是否做错了什么。

考虑只循环:

var result = 1;
for (var i = 0; i < str.length; i++) result *= str[i];
alert(result);
于 2012-04-25T11:41:32.350 回答