嗨我正在嘗試下面的方法來計算數組數組的乘積。是否有可能使用此方法實現數組乘法
var str = [1,2,3];
alert(str.join('*') * 1);
但它返回我NaN
。
有沒有其他的方式來做到這一點。
嗨我正在嘗試下面的方法來計算數組數組的乘積。是否有可能使用此方法實現數組乘法
var str = [1,2,3];
alert(str.join('*') * 1);
但它返回我NaN
。
有沒有其他的方式來做到這一點。
理想的是使用Array.reduce
:
alert(str.reduce(function (acc, curr) { return acc * curr; }, 1));
Array.reduce
在版本9之前的IE中不可用,但應該有很多實現可供查找(例如this one)。
你在找什麼正在評估字符串表達式:
alert(eval(str.join('*')));
然而,一如既往,如果您正在使用eval
你應該認真問自己,如果你正在做的事情是錯誤的。
只考慮循環,而不是:
var result = 1;
for (var i = 0; i < str.length; i++) result *= str[i];
alert(result);
謝謝回答。可悲的是我的應用程序也應該在IE6中工作。 :-( – Exception 2012-04-25 11:46:09
@SoI:如果您將'Array.prototype.reduce'的定義添加爲您的JS代碼的一部分,那麼它在任何瀏覽器中都可以正常工作,否則,只需遍歷該數組並繼續。 – Jon 2012-04-25 11:48:50