我有一个动态大小的阵列,其看起来像这样:使用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