我的Javascript for循环在1次迭代后停止

My Javascript for loop stops after 1 iteration

本文关键字:迭代 1次 Javascript for 循环 我的      更新时间:2023-09-26

嗨,伙计们,我希望你们能帮助我。

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

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

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');    
}};

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

将内部循环的变量更改为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);
});

return;替换为continue;

CCD_ 9终止该功能
CCD_ 10终止循环
CCD_ 11终止该迭代并继续下一个迭代。