【发布时间】:2020-03-21 13:18:20
【问题描述】:
我不知道这个 for 循环有什么问题。代码对我来说看起来不错,但嵌套循环没有正确增加值 peakAverage。
// Update bar data
for (let i = 0; i < bars.length; i++) {
let peakAverage = 0;
if (settings.bars.barsAmount < 7) {
for (let j = 64 / (Math.pow(2, settings.bars.barsAmount) * i); j < 64 / (Math.pow(2, settings.bars.barsAmount) * (i + 1)); j++) {
peakAverage += finalProcessing[j];
}
peakAverage /= 64 / Math.pow(2, settings.bars.barsAmount)
bars[i].desiredHeight = peakAverage * canvas.height / 3 + 1;
}
}
代码应该根据bars 数组的长度从finalProcessing 数组中获取值,这样对于bars 数组的每个元素,finalProcessing 数组的一部分被迭代,然后计算这些值的平均值。
【问题讨论】:
-
你需要解释这段代码应该执行什么?从语法上看,它看起来还不错。但是条件
j<...可能永远不会执行。 -
很难理解您的代码,因为我们缺少有关
bars、settings和finalProcessing的信息 -
@DumbCoder7 和@Guerric P,
bars是一个可能长度为 2^x 的数组。settings.bars.length是 2 的指数。最后,finalProcessing是一个固定长度为 64 的数组。 -
哦,最后评论应该是
settings.bars.barsAmount。 -
除非
i为负数,否则64 / (Math.pow(2, settings.bars.barsAmount) * (i + 1))总是小于64 / (Math.pow(2, settings.bars.barsAmount) * i),所以循环永远不会迭代。
标签: javascript arrays for-loop