2017-07-19 3 views
0

Existe-t-il un moyen de combiner ces deux codes en un? Je veux vérifier si certaines variables sont égales à 0 ou égales à 1 ou égales à 2 ou supérieures à 2 et inférieures à 5 ou supérieures à 5. Devrais-je écrire un code pour chaque variable ou écrire un code pour toutes les variables?Quelle est la forme abrégée de ce code de variable de comparaison

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

que voulez-vous dire par code pour chaque variable ou écrire un code pour toutes les variables? – ja08prat

+0

Je veux dire par exemple à la place de ceci: NRIRDL == 0, NRIRDR == 0, puis-je faire ceci: NRIRDL || NRIRDR == 0? –

Répondre

0

en fait, il peut être plus court écrit avec l'opérateur ternaire et sans multiples si les conditions, check it out:

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

il suffit d'utiliser la fonction getValue(n): passez votre variable et wi retourner la valeur nécessaire qui peut être stockée dans une autre variable comme var XRIRDL = getValue(NRIRDL); ou var XRIRDR = getValue(NRIRDR);

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

Vous pouvez en faire une fonction:

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

Lorsque vous ou les deux entrées ensemble, vous perdez des informations précieuses dont l'une des deux entrées déclenché cette condition. La réponse de Mike peut ne pas convenir à vos besoins car vous ne pouvez pas mettre à jour les valeurs indépendamment les unes des autres (si NRIDR == 0 et NRIDL == 2, il semble que vous ne voulez pas que XRIDR et XRIDL soient égaux 1.8.)

0

Vous pourriez le mettre dans une fonction. Voici une copie de votre code dans une fonction.

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

Vous pouvez passer NRIRDL ou NRIRDR dans la fonction et vous obtiendrez votre XRIRDL