如何让JavaScript循环中每次增量按2、4、6…依次递增?
实现循环递增幅度为2、4、6……的方案
没问题!要实现你说的循环每次按2、4、6……的幅度递增(首次让初始值乘2,第二次乘4,以此类推),我们可以利用循环的索引来计算每次的乘数——因为你需要的乘数正好是2*(循环索引+1)(循环从0开始的话,第一次索引0对应2×1=2,第二次索引1对应2×2=4,完美匹配你的需求)。
结合你的现有代码,修改后的版本如下:
function setDatePosition(timelineComponents, min) { // 建议把i声明为局部变量,避免全局变量污染 for (let i = 0; i < timelineComponents['timelineDates'].length; i++) { var distance = daydiff(timelineComponents['timelineDates'][0], timelineComponents['timelineDates'][i]); // 计算当前循环的递增乘数:2、4、6……依次递进 const incrementMultiplier = 2 * (i + 1); // 把乘数应用到你的距离归一化计算上(补全了你代码里的Math.round部分) var distanceNorm = Math.round(distance) * incrementMultiplier; // 这里继续写你原本的后续逻辑代码... } }
额外补充
如果你是要基于某个固定初始值(比如你例子里的2)来计算结果,直接用初始值乘乘数就可以:
const initialValue = 2; const currentResult = initialValue * incrementMultiplier; // 第一次循环得到2×2=4,第二次2×4=8,第三次2×6=12……完全符合你的要求
另外,把循环变量i用let声明而不是隐式全局变量,是更规范的JavaScript代码实践,能避免不必要的全局作用域问题。
内容的提问来源于stack exchange,提问作者Marco
相关产品推荐
相关产品推荐

