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 : "";