JS:根据条件在for循环内分配变量值

时间:2019-03-29 05:38:46

标签: javascript jquery

我需要添加

CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS=NO

if (obj1[i][0] !== d1 && row > -1) continue;

取决于if (obj1[i][1] !== d2 && row > -1) continue; 的值,但是我不确定自己做错了什么。

d1 and d2语句充当过滤器,它将仅允许分配给ifd1的那些值,例如,如果d2它仅打印具有1而不是全部的值表中的值。

d1=1

3 个答案:

答案 0 :(得分:1)

我认为,这就是您想要的。您正在考虑将statement传递给loop的方式实际上不起作用。

我们可以简化以下代码

d1 != null || d1 != undefined

通过使用JavaScript truthy & falsey

请参见下面的代码:

$("#session_id, #start_date").on('change', function() {
    var d1 = $( "#session_id" ).val();
    var d2 = $( "#start_date" ).val();

    $("#tbody").empty();

    for (var i = 0; i < obj1.length; i++) {
        if (d1 && obj1[i][0] !== d1 && row > -1) continue;
        if (d2 && obj1[i][1] !== d2 && row > -1) continue;
        row++;
        var newTr = table.insertRow(-1);
        newTr.insertCell(-1).appendChild(document.createTextNode(obj1[i][1]));
        newTr.insertCell(-1).appendChild(document.createTextNode(obj1[i][2]));
        newTr.insertCell(-1).appendChild(document.createTextNode(obj1[i][3]));
        newTr.insertCell(-1).appendChild(document.createTextNode(obj1[i][4]));
        newTr.insertCell(-1).appendChild(document.createTextNode(obj1[i][5]));
    }
});

答案 1 :(得分:0)

只需从值中删除语句并将其转换为Boolean并将其传递给function

if(d1 != null || d1 != undefined){
        kl1 = obj1[i][0] !== d1 && row > -1
        v(kl1);
    }

    if(d2 != null || d2 != undefined){
        var kl = obj1[i][1] !== d2 && row > -1
        v(kl);
    }

    function v(data){
        for (var i = 0; i < obj1.length; i++) {
                if(data) continue;
            row++;
            var newTr = table.insertRow(-1);
            newTr.insertCell(-1).appendChild(document.createTextNode(obj1[i][1]));
            newTr.insertCell(-1).appendChild(document.createTextNode(obj1[i][2]));
            newTr.insertCell(-1).appendChild(document.createTextNode(obj1[i][3]));
            newTr.insertCell(-1).appendChild(document.createTextNode(obj1[i][4]));
            newTr.insertCell(-1).appendChild(document.createTextNode(obj1[i][5]));
        }
    }

答案 2 :(得分:0)

您为k1分配的分配是字符串。这就是为什么不传递继续而是传递整个语句的原因。请在下面找到您可以采取的方法。

if(d1 != null || d1 != undefined){
    if (obj1[i][0] !== d1 && row > -1) kl = "true";
    v(kl);
}

if(d2 != null || d2 != undefined){
    if (obj1[i][1] !== d2 && row > -1) kl =  "true"
    v(kl);
}

function v(data){
    for (var i = 0; i < obj1.length; i++) {
            if(data=="true") continue
        row++;
    var newTr = table.insertRow(-1);
    newTr.insertCell(-1).appendChild(document.createTextNode(obj1[i][1]));
    newTr.insertCell(-1).appendChild(document.createTextNode(obj1[i][2]));
    newTr.insertCell(-1).appendChild(document.createTextNode(obj1[i][3]));
    newTr.insertCell(-1).appendChild(document.createTextNode(obj1[i][4]));
    newTr.insertCell(-1).appendChild(document.createTextNode(obj1[i][5]));
}