2012-04-25 96 views

回答

4

理想的是使用Array.reduce

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

See it in action

Array.reduce在版本9之前的IE中不可用,但应该有很多实现可供查找(例如this one)。

+0

谢谢回答。可悲的是我的应用程序也应该在IE6中工作。 :-( – Exception 2012-04-25 11:46:09

+1

@SoI:如果您将'Array.prototype.reduce'的定义添加为您的JS代码的一部分,那么它在任何浏览器中都可以正常工作,否则,只需遍历该数组并继续。 – Jon 2012-04-25 11:48:50

1

你在找什么正在评估字符串表达式:

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

然而,一如既往,如果您正在使用eval你应该认真问自己,如果你正在做的事情是错误的。

只考虑循环,而不是:

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

感谢回答:您能否列举使用eval()的缺点?并且在所有IE浏览器中都可以使用这种方法吗? – Exception 2012-04-25 11:45:03

+0

@SoI:它适用于所有浏览器,但使用它会有风险,因为它会评估任何内容。完全控制你评估的内容,你可能有跨站点脚本漏洞。 – Guffa 2012-04-25 12:07:26