Home > database >  How to correctly convert from if/else statement to ternary expression?
How to correctly convert from if/else statement to ternary expression?

Time:09-06

if we don’t have a number in ${desc}, we take extId and if doesn’t have extId, then it goes with empty string. I tried to convert this:

        if (/^\d $/.test(desc)) {
          console.log(desc);
        }
        if (!/^\d $/.test(desc) && exlId != null) {
          console.log(extId);
        } else {
          console.log("");
        }

to this :

 /^\d $/.test(desc)
            ? desc
            : ""
            ? !/^\d $/.test(desc) && extId != null
            : ""

what I do wrong?

CodePudding user response:

If I got your question correctly:

const log =  /^\d $/.test(desc) ? desc : extId ? extId : "";
// Prints: -------------------------^-------------^-------^

or alternatively:

const log =  /^\d $/.test(desc) && desc || extId && extId || "";

PS: fix also your typo: exlId !== extId

CodePudding user response:

Might be Your syntax is wrong to implement the multiple conditions in the ternary operator

It should be like

condition1 ? condition2 ? Expression1 : Expression2 : Expression3

 /^\d $/.test(desc)
            ? !/^\d $/.test(desc) && extId != null ?
            "" : desc;

check out this for more info https://www.geeksforgeeks.org/how-to-use-multiple-ternary-operators-in-a-single-statement-in-javascript/#:~:text=In the above syntax, we,then the output is Expression1.

CodePudding user response:

Here's your ternary statement:

/^\d $/.test(desc) ? desc : "" ? !/^\d $/.test(desc) && extId != null : "";

The above statement if written in if-else form:

if (/^\d $/.test(desc)) {
    console.log(desc);
}
else if ("") {
    console.log(!/^\d $/.test(desc) && extId != null);
}
else {
    console.log("");
}

You can see the issue here. Now here is the correct ternary statement:

/^\d $/.test(desc) ? desc : extId ? extId : "";
  • Related