这个比较变量代码的缩写形式是什么

What is the short form of this compare variable code

有什么方法可以将这两个代码合二为一吗?我想检查一些变量是否等于0或等于1或等于2或大于2且小于5或大于5。我应该为每个变量写一个代码还是我可以为所有变量写一个代码?

       <script>
   if (NRIRDL==0){
XRIRDL=0;
    } 
else if (NRIRDL == 1){
XRIRDL = 1;
    }
else if (NRIRDL == 2){
    XRIRDL = 1.8;
}
else if (NRIRDL > 2 && NRIRDL < 5){
    XRIRDL = 0.9 * NRIRDL;
}
else {
    XRIRDL = NRIRDL - 1;
}
 // code below is the same as code above, but variables are different.

if (NRIRDR==0){
    XRIRDR=0;
} 
else if (NRIRDR == 1){
    XRIRDR = 1;
}
else if (NRIRDR == 2){
    XRIRDR = 1.8;
}
else if (NRIRDR > 2 && NRIRDR < 5){
    XRIRDR = 0.9 * NRIRDR;
}
else {
    XRIRDR = NRIRDR - 1;
}
     </script>
<script>
    if (NRIRDL==0 || NRIRDR==0 ){
        XRIRDL=0;
        XRIRDR=0;
    } 
    else if (NRIRDL == 1 || NRIRDR == 1)){
        XRIRDL = 1;
        XRIRDR = 1;
    }
    else if (NRIRDL == 2 || NRIRDR == 2)){
        XRIRDL = 1.8;
        XRIRDR = 1.8;
    }
    else if ((NRIRDL > 2 && NRIRDL < 5) || (NRIRDR > 2 && NRIRDR < 5) ){
        XRIRDL = 0.9 * NRIRDL;
        XRIRDR = 0.9 * NRIRDR;
    }
    else {
        XRIRDL = NRIRDL - 1;
        XRIRDR = NRIRDR - 1;
    }
</script>

你可以把它变成一个函数:

function yourFunction(val) {
  if (val == 0){
    return 0;
  } 
  else if (val == 1){
    return 1;
  }
  else if (val == 2){
    return 1.8;
  }
  else if (val > 2 && val < 5){
    return 0.9 * val;
  }
  else {
    return val - 1;
  }
XRIDR = yourFunction(NRIDR);
XRIDL = yourFunction(NRIDL);

当您对两个输入进行“或”运算时,您会丢失有关两个输入中的哪一个触发了该条件的宝贵信息。

Mike 的回答可能不符合您的需要,因为您不能相互独立地更新值(即,如果 NRIDR == 0 和 NRIDL == 2,听起来您不希望 XRIDR 和 XRIDL 都更新等于 1.8.)

你可以把它放在函数中。这是函数中代码的复制粘贴。

function xrirdr(dr_or_dl){
var XRIRDL = null;
if (dr_or_dl==0){
XRIRDL=0;
    } 
else if (dr_or_dl == 1){
XRIRDL = 1;
    }
else if (dr_or_dl == 2){
    XRIRDL = 1.8;
}
else if (dr_or_dl > 2 && dr_or_dl < 5){
    XRIRDL = 0.9 * dr_or_dl;
}
else {
    XRIRDL = dr_or_dl - 1;
}
return XRIRDL;
}

您可以在函数中传递 NRIRDL 或 NRIRDR,它将为您提供 XRIRDL

其实可以用三元运算符写得更短,不用多个if条件,看看:

function getValue(n) {
    return n >= 2 && n < 5 ? n * 0.9 : n == 0 ? 0 : n == 1 ? 1 : n - 1;
}

var var1 = 0; 
var var2 = 1;
var var3 = 2;
var var4 = 3;
var var5 = 5;
console.log(getValue(var1)); // outputs 0
console.log(getValue(var2)); // outputs 1
console.log(getValue(var3)); // outputs 1.8
console.log(getValue(var4)); // outputs 2.7
console.log(getValue(var5)); // outputs 4

只需使用 getValue(n) 函数:传递您的变量,它将 return 需要的值存储到另一个变量中,例如 var XRIRDL = getValue(NRIRDL);var XRIRDR = getValue(NRIRDR);