2012-04-25 112 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

相關問題