Javascript 复杂If语句;||没有像我希望的那样工作

Javascript 复杂If语句;||没有像我希望的那样工作,javascript,if-statement,Javascript,If Statement,我觉得这是一个非常愚蠢的问题,但我的大脑已经崩溃了。现在我正在研究一组非常复杂的if和else语句,我想知道是否有更简单的方法?我最初尝试了一些语句,但没有得到预期的结果 if(fields[0].value === '' && fields[1].value === '' && fields[2].value === '' && fields[3].value === '' ) { clusterGroup.addLayer(layer)

我觉得这是一个非常愚蠢的问题,但我的大脑已经崩溃了。现在我正在研究一组非常复杂的if和else语句,我想知道是否有更简单的方法?我最初尝试了一些语句,但没有得到预期的结果

if(fields[0].value === '' && fields[1].value === '' && fields[2].value === '' && fields[3].value === '' ) {
    clusterGroup.addLayer(layer);
} else if(fields[0].value === '' && fields[1].value === city && fields[2].value === '' && fields[3].value === '') {
    clusterGroup.addLayer(layer);

} else if(fields[0].value === state && fields[1].value === '' && fields[2].value === '' && fields[3].value === '') {
    clusterGroup.addLayer(layer);

} else if(fields[0].value === state && fields[1].value === city && fields[2].value === '' && fields[3].value === ''){
    clusterGroup.addLayer(layer);

} else if(fields[0].value === '' && fields[1].value === '' && (fields[2].value <= sq && sq != null) && fields[3].value === '') {
    clusterGroup.addLayer(layer);

} else if(fields[0].value === '' && fields[1].value === '' && fields[2].value === '' && (fields[3].value >= sq  && sq != null)) {
    clusterGroup.addLayer(layer);

} else if(fields[0].value === '' && fields[1].value === city && (fields[2].value <= sq && sq != null) && fields[3].value === ''){
    clusterGroup.addLayer(layer);

} else if(fields[0].value === state && fields[1].value === '' && fields[2].value === '' && (fields[3].value >= sq  && sq != null)){
    clusterGroup.addLayer(layer);

} else if(fields[0].value === state && fields[1].value === city && (fields[2].value <= sq && sq != null) && fields[3].value === ''){
    clusterGroup.addLayer(layer);

} else if(fields[0].value === state && fields[1].value === city && fields[2].value === '' && (fields[3].value >= sq  && sq != null)){
    clusterGroup.addLayer(layer);

} else if(fields[0].value === state && fields[1].value === city && (fields[2].value <= sq && sq != null) && (fields[3].value >= sq  && sq != null)){
    clusterGroup.addLayer(layer);
}

在高级版中谢谢。

我不知道您是如何使用OR语句的,但您可以使用if语句


试着把它重组成这样

if (sq != null) {
if (fields[3].value >= sq &&
    fields[2].value <= sq &&
    fields[0].value === state &&
    field[1].value === city) {

    clusterGroup.addLayer(layer);

} else if (fields[3].value >= sq) {
    if ((fields[0].value === state) ||
        (fields[0].value === state && field[1].value === city) ||
        (fields[0].value === '' &&
            field[1].value === '')) {

        clusterGroup.addLayer(layer);
    }
} else if (fields[2].value <= sq) {
    if ((fields[1].value === city) ||
        (fields[0].value === state && field[1].value === city) ||
        (fields[0].value === '' && field[1].value === '')) {

        clusterGroup.addLayer(layer);
    }
}
} else if ((fields[1].value === '' && fields[0].value === state) ||
(fields[0].value === '' && fields[1].value === city) ||
(fields[0].value === state && fields[1].value === city)) {

clusterGroup.addLayer(layer);
}

这段代码是否做了您希望它做的事情?什么是or语句?不管你的情况如何,你都会调用相同的函数:考虑在谷歌上寻找状态机,你会得到很多资源,这里可以使用一个小型状态机来避免这种混乱。你会感到惊讶,并得到一个新的视角来解决这些问题。不是什么,只有那11组条件。这可能是一个更好的写作方式。我没想到那样用。非常感谢。我试着不使用这么多不同的条件就离开,但我想我别无选择
if (sq != null) {
if (fields[3].value >= sq &&
    fields[2].value <= sq &&
    fields[0].value === state &&
    field[1].value === city) {

    clusterGroup.addLayer(layer);

} else if (fields[3].value >= sq) {
    if ((fields[0].value === state) ||
        (fields[0].value === state && field[1].value === city) ||
        (fields[0].value === '' &&
            field[1].value === '')) {

        clusterGroup.addLayer(layer);
    }
} else if (fields[2].value <= sq) {
    if ((fields[1].value === city) ||
        (fields[0].value === state && field[1].value === city) ||
        (fields[0].value === '' && field[1].value === '')) {

        clusterGroup.addLayer(layer);
    }
}
} else if ((fields[1].value === '' && fields[0].value === state) ||
(fields[0].value === '' && fields[1].value === city) ||
(fields[0].value === state && fields[1].value === city)) {

clusterGroup.addLayer(layer);
}