您好我正在尝试以下方法来计算数字数组的乘积。
var str = [1,2,3];
alert(str.join('*') * 1);
但它返回NaN
。
还有其他方法吗?
答案 0 :(得分:4)
理想情况是使用Array.reduce
:
alert(str.reduce(function (acc, curr) { return acc * curr; }, 1));
在版本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);