我如何编写一个 Javascript for 循环,以便在满足第一个条件时中断
how can I code a Javascript for loop so that it breaks when the first condition is met?
我试图编写一个脚本来查找最大公因数(最高公因数/HCF),但是循环正在向下倒计时,所以我想在找到第一个公因数后立即中断(因为它向下倒计时,所以这也是 HCF)。
但是,我的代码结果打印了所有公共因素,并且在找到 4 时并没有立即脱离循环,对于 12 和 8 的 HCF。
在这里:
function maxi(a, b) {
for (var i = a; i >= 1; i--) {
for (var j = b; j >= 1; j--) {
if (a % i == 0) {
if (b % j == 0 && i == j) {
console.log(i);
break;
}
}
}
}
}
maxi(12, 8);
我猜你的逻辑是正确的。
只是改变
if (b % j == 0 && i == j){
console.log(i);
break;
}
自
if (b % j == 0 && i == j){
console.log(i);
return;
}
一种方法是使用"return"而不是"break"。
function maxi(a,b){
for (var i=a; i>=1; i--){
for (var j=b; j>=1; j--){
if (a % i == 0){
if (b % j == 0 && i == j){
return i;
}
}
}
}
}
console.log(maxi(12,8));
像这样标记你的循环:
function maxi(a,b) {
loop1:
for (var i = a; i >= 1; i--){
loop2:
for (var j = b; j >= 1; j--){
if (a % i == 0){
if (b % j == 0 && i == j){
console.log(i);
break loop2; // Breaks out of all loops.
}
}
}
}
}
maxi(12,8);
人们忘记了这些存在,但它们是语言中完全有效的一部分。
你只需要测试是否达到了所需的输出,并在你的外部for循环中放置第二个断点,就像这样。
function maxi(a,b){
var iAmFinished = false;
for (var i=a; i>=1; i--){
for (var j=b; j>=1; j--){
if (a % i == 0){
if (b % j == 0 && i == j){
console.log(i);
iAmFinished = true;
break;
}
}
}
if (iAmFinished) {
break;
}
}
}
maxi(12,8);
当您中断时,除非您另有指定,否则您将从最近的循环中断。
可以使用标签指定要中断的特定循环。
function maxi(a, b) {
outer:
for (var i = a; i >= 1; i--) {
inner:
for (var j = b; j >= 1; j--) {
if (a % i == 0) {
if (b % j == 0 && i == j) {
console.log(i);
break outer;
}
}
}
}
}
maxi(12, 8);
有两种同样优雅的方法可以实现相同的效果。
选项 1 :
使用return
而不是break
:
function maxi(a, b) {
for (var i = a; i >= 1; i--) {
for (var j = b; j >= 1; j--) {
if (a % i == 0) {
if (b % j == 0 && i == j) {
console.log(i);
return;
}
}
}
}
}
maxi(12, 8);
当在函数中调用 return 语句时,执行此语句 函数已停止。如果指定,则给定值将返回到 函数调用方。如果省略表达式,则返回未定义 相反。
源
选项 2 :
将break
与label
结合使用:
function maxi(a, b) {
outerloop:
for (var i = a; i >= 1; i--) {
for (var j = b; j >= 1; j--) {
if (a % i == 0) {
if (b % j == 0 && i == j) {
console.log(i););
break outerloop;
}
}
}
}
}
maxi(12, 8);
标记的语句可以与中断或继续语句一起使用。 它是在语句前面加上您可以引用的标识符。
[...]
可以使用标签来标识循环,然后使用中断或 继续语句,指示程序是否应中断 循环或继续执行。
源
相关文章:
- 而循环只设置php中输入字段中的第一个值
- 错误:$injector:modulerr模块错误(我的第一个SPA应用程序)
- IE11中的第二个调用取消了第一个Fetch API调用
- Javascript XMLHttpRequest——只有第一个POST请求有效
- 使用javascript或angularjs特定过滤器搜索字符串中第一个img标记的json值
- 将OnClick函数设置为<ul>,最后一个ul是擦除第一个ul-s
- RxJS油门行为;立即获取第一个值
- Angular UI网格:如何通过第一个UI网格中的按钮使第二个UI网格可见
- 选择多个实例中的第一个
- 如何在调用下一个请求之前完成第一个Ajax Get请求
- Lodash:返回对象的第一个键,该对象的值(即数组)中有一个给定的元素(即字符串)
- 看起来第一个console.log是'It’不太对
- 与杜兰达尔合作的第一个JavaScript项目.尝试从第三方 API 获取数据
- 节点发布错误对象的第一个“属性”
- Javascript:表单验证getElementById仅返回第一个id元素
- 仅将 CSS 规则应用于
中的第一个 ,而不分配类/ID - JS在隐藏未定义的值后仅从数组中返回第一个id的值
- 高图表,检测点是否在堆栈中的第一个
- json结果显示第一个值
- 当满足条件时,下拉值重置为第一个值