function myFunction() {
diff = 2;
var l = 12;
b = document.getElementById("yee").value;
var a = Number(document.getElementById("base").value);
var aa = (a * b) / 100;
z = aa;
var r = "";
k = 0;
m = 0;
e = 0;
z = 0;
const yr_arr = [];
for (var i = 0; i < diff; i++) {
if (i) {
var hk = (aa * document.getElementById("per").value) / 100;
aa += Number(hk);
}
n = m;
for (var j = 0; j < l; j++) {
var d = ((aa * n) * 5) / 12 / 100;
var f = d+z;
r += k + 1 + ") " + aa.toFixed(2) + "---" + f.toFixed(2) + "<br/>";
k++;
n++;
yr_arr.push({ x: aa });
}
r += "";
m++;
z = z + d;
}
const yr_result = yr_arr.reduce( ( sum, { x } ) => sum + x , 0);
document.getElementById("yr_demo1").innerHTML += yr_result.toFixed(2);
document.getElementById("demo").innerHTML += r;
}
<div>
<span>Base Quantity</span>
<input type="text" id="base" value="10000" />
</div>
<div>
<span>Base Percent</span>
<input type="text" id="yee" value="12" />
</div>
<div>
<span>Whole Percent</span>
<input type="text" id="per" value="10" />
</div>
<button onclick="myFunction()">Click</button>
<p id="demo"></p>
<p id="yr_demo1"></p>
在这里,我试图计算一些百分比并显示它。另外,我试图得到第二列的总价值。我使用javascript reduce实现了它。
例如,在上面的代码中,您可以看到1200显示12次,而1320显示接下来的12次。我可以得到总值30240(12 * 1200 + 12 * 1320)。但是,我也想每12个计数打印一次。我想在12个计数后显示14400,然后在下一个12个计数后显示15840。
输出,我期望的是
答案 0 :(得分:0)
您可以在生成第一个for循环时就已经计算出总和,而不是在生成数组后计算总和。
然后,您可以使用Remainder operator %
来检查索引i是否可被12整除并将行添加到r。
…
yr_arr.push({ x: aa });
}
sum += aa;
if (i % 12 === 0) r += aa + "<br/>";
那么就不需要映射了。