需要if语句逻辑的解决方案

时间:2017-08-18 17:23:06

标签: javascript

我需要使用if语句的条件逻辑帮助如下:

  • 变量A和B包含3个属性,分别为level1,level2和level3。
  • level1和level2可以是0或更多,level3是null或numeric。
  • 变量A和B可以为空。

目前我有这个条件:

if (A.level1 == 0 and B.level1 == 0) {
  code here
} else if (A.level2 == 0 and B.level2 == 0) {
  code here
} else if (A.level3 != null and B.level3 != null) {
  code here
}

问题是此代码不处理Variables A and B can be null部分。代码应该像这样处理那个部分:

  • 当A为空时,B仍然会经历相同的条件,但没有A,反之亦然。
  • 但是,如果A和B为空,则条件将立即为假。

我遇到了如何在我的条件下实施Variables A and B can be null部分的任何建议?

4 个答案:

答案 0 :(得分:2)

在您的条件中添加AB isNull检查:

if (A == null && B == null) {
    return;
} else if ((A == null || A.level1 == 0) && (B == null || B.level1 == 0)) {
    // code here
} else if ((A == null || A.level2 == 0) && (B == null || B.level2 == 0)) {
    // code here
} else if ((A == null || A.level3 != null) && (B == null || B.level3 != null)) {
    // code here
}

<强>解释

以此else if ((A == null || A.level1 == 0) && (B == null || B.level1 == 0))语句中的A为例:

A == null ||放入(A == null || A.level1 == 0) && (B == null || B.level1 == 0),如果A为空,则此A.level1 == 0检查将被忽略,因此检查将与else if (B == null || B.level1 == 0)等效。

由于第一个if已经检查A == null && B == null,因此下面的else if不会使A和B都为空。因此,现在else if ((A == null || A.level1 == 0) && (B == null || B.level1 == 0))将等同于else if (B.level1 == 0)

<强> P.S。在这里,我们利用||特征,即如果第一个条件得到满足,第二个条件将被忽略。

答案 1 :(得分:0)

似乎这就是你要找的东西:

// Both A and B are null
if(A == null && B == null){
    // do something
}
// Only A is null
else if(A == null){
    if(B.level1 == 0){
        // do something
    }
    else if(B.level2 == 0){
        // do something
    }
    else if(B.level3 != null){
        // do something
    }
}
// Only B is null
else if(B == null){
    if(A.level1 == 0){
        // do something
    }
    else if(A.level2 == 0){
        // do something
    }
    else if(A.level3 != null){
        // do something
    }
}
// Neither A or B are null
else{
    if(A.level1 == 0 && B.level1 == 0){
        // do something
    }
    else if(A.level2 == 0 && B.level1 == 0){
        // do something
    }
    else if(A.level3 != null && B.level3 != null){
        // do something
    }
}

答案 2 :(得分:0)

我建议先检查AB的假值,然后检查属性。

var A = null,
    B = null;

if (!A && !B) {
    console.log('A or B is null');
} else if (A.level1 === 0 && B.level1 === 0) {
    console.log(1);
} else if (A.level2 === 0 && B.level2 === 0) {
    console.log(2);
} else if (A.level3 != null && B.level3 != null) {
    console.log(3);
}

答案 3 :(得分:0)

分别处理A和B,

如果(!A){

if(A.level1 === 0 && A.level2 ===0){

}
else if(A.level1 === 0){


}
else if(A.level1 > 0){

}


if(A.level2 === 0){

}
else if(A.level2 > 0){

}

if(A.level3 === null){

}
else if (typeof (A.level3) === "number"){
}

}

这里的B相同......