我有一個動態大小的陣列,其看起來像這樣:使用Javascript:乘以動態地定尺寸數組值同時
var myArray = [0.10,0.12,0.08,0.08];
陣列可以具有更多或更少的值比上面。
這裏的目的是將其插入以下公式:
var iFormula = 1 - ((1 - value1)*(1 - value2)*(1 - value3)* ... (1 - valuen))
我試圖for循環如下:
for(var i = 0; i < myArray .length; i++) {
iResult = iResult * (1 - myArray[i])
};
然後減去iResult從1,但你可以想像,做以上for循環與計算iFormula不同。例如,使用數組在我的問題上,如果我兩個0.08值結合在一起,使下面的數組:
var myArray = [0.10,0.12,0.16];
下列兩個方程式使用相同的有效數字,但產生兩種不同的結果:
var iResult_1 = 1 - ((1 - 0.10)*(1 - 0.12)*(1 - 0.08)*(1 - 0.08)); // 0.3297
var iResult_2 = 1 - ((1 - 0.10)*(1 - 0.12)*(1 - 0.16)); // 0.3347
由於數組是動態調整大小的,我不知道當它到達我的代碼的某個部分時,數組中有多少個值。因此,我不能硬編碼的公式是這樣的:
var iFormula = 1 - ((1 - myArray[0])*(1 - myArray[1])*(1 - myArray[2])
任何想法,我可以構造這個?有沒有更好的方法來做這種事情?
不,我不能」不要想象。 for循環應該完美工作。在循環之前是否將'iResult'初始化爲'1'? – Barmar 2015-03-03 10:00:11
你忘記了高中代數嗎? '(1-x)*(1-x)'不等於'(1 - 2x)'。它等於'(1 - 2x + x^2)' – Barmar 2015-03-04 15:28:09