【问题标题】:My Javascript for loop stops after 1 iteration我的 Javascript for 循环在 1 次迭代后停止
【发布时间】:2016-04-30 13:02:48
【问题描述】:

大家好,希望你们能帮到我。

我有这段代码循环遍历一个内部包含不同对象的数组,并将其中一个属性的内容与给定数组的内容进行比较。现在它工作正常,我唯一的问题是它仅在 1 次迭代后停止(这发生在第一个循环,而不是第二个循环)。

这是代码。我希望你们能帮助我。

var checkIfChecked = function () {

for (var i=0; i < recepten.length; i++) {

    var kanIkHetMaken = true;

    var ditRecept = recepten[i];

    for (var i=0; i < ditRecept.nodigeIngredienten.length; i++) {

        var dezeIngredienten = ditRecept.nodigeIngredienten[i];

        var index = checked.indexOf(dezeIngredienten);

        console.log(index);

        if (index === -1) {

            kanIkHetMaken = false;
            return;

        }

    }

    if (kanIkHetMaken === true) {

    document.getElementById(ditRecept.id).style.display = "block";

    }

    console.log('1e recept gedaan');    

}};

【问题讨论】:

  • 尝试在第二个for循环中给不同的变量名。
  • 您在两个循环中都使用了i

标签: javascript html loops for-loop


【解决方案1】:

您在两个循环中使用了相同的变量i。因此,当内部循环越过外部循环时,会检查 i 的更新值以进行比较。 为内部循环使用不同的变量,如j

【讨论】:

    【解决方案2】:

    将内部循环的变量更改为j,并采用break 而不是return

    for (var j = 0; j < ditRecept.nodigeIngredienten.length; j++) { // change i to j
        var dezeIngredienten = ditRecept.nodigeIngredienten[j]; // use j
        var index = checked.indexOf(dezeIngredienten);
        console.log(index);
        if (index === -1) {
            kanIkHetMaken = false;
            break;  // exit the inner loop
        }
    }
    

    Array#every 的一点改进:

    kanIkHetMaken = ditRecept.nodigeIngredienten.every(function (dezeIngredienten) {
        return ~checked.indexOf(dezeIngredienten);
    });
    

    【讨论】:

    • 是的,做到了!谢谢!如果这是一个愚蠢的问题,我也很抱歉,我仍然是一名学生并且正在学习 javascript。
    【解决方案3】:

    return; 替换为continue;

    return 终止函数。
    break 终止循环。
    continue 终止该迭代并继续下一个迭代。

    【讨论】:

    • 我暂时删除了这个答案,因为我想也许我忽略了你关于它是第一个循环的说法,但我不确定情况是否如此。没有其他东西会导致你的循环提前终止,所以我想你想要的是break。很难说,因为代码是用外语写的,哈哈。
    • 是的,我按照@FoPi 所说的做了,我还用 continue 替换了 return,现在它可以工作了,非常感谢!抱歉哈哈,我应该先翻译一下。
    猜你喜欢
    • 2021-07-28
    • 1970-01-01
    • 1970-01-01
    • 2010-11-23
    • 2020-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多