繁体   English   中英

如何在循环 JavaScript 中跳过一个数字?

[英]How to skip a number in loop JavaScript?

 var text = ""; var i; for (i = 0; i < 10; i++) { if (!i == 5) text += "The number is " + i + "<br>"; } document.getElementById("demo").innerHTML = text;
 <p id="demo"></p>

在上面的代码中,我想从 0 循环到 10,但我想跳过数字 5。我想从 0 显示到 4,跳过 5,然后从 6 显示到 10。上面的代码不起作用。

您可以使用continue

 var text = ""; var i; for (i = 0; i < 10; i++) { if (i == 5) continue; text += "The number is " + i + "<br>"; } document.getElementById("demo").innerHTML = text;
 <p id="demo"></p>

另一种方法是将代码包装在for块内的if语句中

 var text = ""; var i; for (i = 0; i < 10; i++) { if (i !== 5){ text += "The number is " + i + "<br>"; } } document.getElementById("demo").innerHTML = text;
 <p id="demo"></p>

if (!i == 5)应该是if (i !== 5)

如果添加!(i == 5)则解决方案将起作用。

 var text = ""; var i; for (i = 0; i < 10; i++) { if (!(i == 5)) text += "The number is " + i + "<br>"; } document.getElementById("demo").innerHTML = text;
 <div id="demo"></div>

或者我更喜欢使用 ES6 的更短的方式:

 const reduce = (a, c, i) => i === 5 ? a : a.concat(`The number is ${c}<br>`); const text = Array.from(Array(10).keys()).reduce(reduce, ''); document.getElementById("demo").innerHTML = text;
 <div id="demo"></div>

我希望这有帮助!

您还可以创建一个生成器,生成不在其“跳过”列表中的索引。

 const rangeWithSkip = function*(start, end, skips) { for (let i = start; i < end; i++) { if (skips.includes(i)) continue; yield i; } } let textArr = []; for (let i of rangeWithSkip(0, 10, [3, 5, 8])) { textArr.push(`The number is ${i}`); } document.getElementById("demo").innerHTML = textArr.join('<br />');
 <p id="demo"></p>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM