如何优化大量if-else if-else表达式

M A*_*fan 10 javascript if-statement listjs

这是代码的一些示例..

if(loc > 0 || cat > 0 || price > 0 || jsBed <= bedroom || jsBuilt >= built) {    
 /// Condition to checn all true
    return true;
} else if(loc < 0 || cat > 0 || price > 0 || jsBed <= bedroom || jsBuilt >= built) { 
   /////// 1 false other are true 

} else if(loc > 0 || cat < 0 || price > 0 || jsBed <= bedroom || jsBuilt >= built) { 

}
Run Code Online (Sandbox Code Playgroud)

如何处理这些情况.如果我有5个声明.然后它必须是一个接一个的12+条件..如果我检查所有5个组合,它会更多的代码行,我们有更好的选择来检查所有条件.

Mur*_*nik 12

如果将布尔表达式视为javascript中的整数,它将计算为0(for false)或1(for true).因此,您可以对条件求和,然后使用switch-case结构来检查有多少是真的:

var numTrue = 
   (loc > 0) + (cat > 0) + (price > 0) + (jsBed <= bedroom) + (jsBuilt >= built);

switch(numTrue) {
    case 0:
        // do something if no condition is met
        break;
    case 1:
        // do something else if one condition is met
        break;
    // etc...
}
Run Code Online (Sandbox Code Playgroud)

  • 所以loc = 0,cat = 1被视为loc = 1,cat = 0.这并不能解决OP的例子.它仅检查满足条件的总数. (6认同)
  • 实际上,我可能错了,这可能是OP正在寻找的,虽然它没有明确说明. (2认同)