1

If we don’t have a number in ${desc}, we log out 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
  : ""

But this didn't work. What I do wrong?

The Coding Fox
  • 1,488
  • 1
  • 4
  • 18

3 Answers3

1

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

Roko C. Buljan
  • 196,159
  • 39
  • 305
  • 313
1

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%20the%20above%20syntax%2C%20we,then%20the%20output%20is%20Expression1.

che
  • 61
  • 1
  • 11
-1

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 : "";
The Coding Fox
  • 1,488
  • 1
  • 4
  • 18