这个比较变量代码的简短形式是什么

时间:2017-07-19 18:27:36

标签: javascript numbers compare between

有没有办法可以将这两个代码组合成一个?我想检查一些变量是否等于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>

4 个答案:

答案 0 :(得分:0)

<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>

答案 1 :(得分:0)

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

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);

当您将两个输入组合在一起时,您将丢失有关两个输入中的哪一个触发该条件的有价值信息。

迈克的回答可能不符合您的需求,因为您无法彼此独立更新值(即,如果NRIDR == 0且NRIDL == 2,听起来您不希望XRIDR和XRIDL都等于1.8 。)

答案 2 :(得分:0)

你可以将它放在一个函数中。这是代码在函数内的复制粘贴。

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

答案 3 :(得分:0)

实际上,它可以用三元运算符编写得更短,如果没有多条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)函数:传递您的变量,它将返回所需的值,该值可以存储到另一个变量中,例如var XRIRDL = getValue(NRIRDL);var XRIRDR = getValue(NRIRDR);