I have some code with a lot of if/else statements similar to this:
var name = "true";
if (name == "true") {
var hasName = 'Y';
} else if (name == "false") {
var hasName = 'N';
};
But is there a way to make these statements shorter? Something like ? "true" : "false"
...
This question is related to
javascript
if-statement
Try this method;
Shorthand method:
let variable1 = '';_x000D_
_x000D_
let variable2 = variable1 || 'new'_x000D_
console.log(variable2); // new
_x000D_
Longhand method:
let variable1 = 'ya';_x000D_
let varibale2;_x000D_
_x000D_
if (variable1 !== null || variable1 !== undefined || variable1 !== '')_x000D_
variable2 = variable1;_x000D_
_x000D_
console.log(variable2); // ya
_x000D_
Try like
var hasName = 'N';
if (name == "true") {
hasName = 'Y';
}
Or even try with ternary operator
like
var hasName = (name == "true") ? "Y" : "N" ;
Even simply you can try like
var hasName = (name) ? "Y" : "N" ;
Since name has either Yes
or No
but iam not sure with it.
You can use an object as a map:
var hasName = ({
"true" : "Y",
"false" : "N"
})[name];
This also scales nicely for many options
var hasName = ({
"true" : "Y",
"false" : "N",
"fileNotFound" : "O"
})[name];
(Bonus point for people getting the reference)
Note: you should use actual booleans instead of the string value "true" for your variables indicating truth values.
Most answers here will work fine if you have just two
conditions in your if-else. For more which is I guess what you want, you'll be using arrays.
Every names corresponding element in names
array you'll have an element in the hasNames
array with the exact same index. Then it's a matter of these four lines.
names = "true";
var names = ["true","false","1","2"];
var hasNames = ["Y","N","true","false"];
var intIndex = names.indexOf(name);
hasName = hasNames[intIndex ];
This method could also be implemented using Objects and properties as illustrated by Benjamin.
?: Operator
If you want to shorten If/Else you can use ?:
operator as:
condition ? action-on-true : action-on-false(else)
For instance:
let gender = isMale ? 'Male' : 'Female';
In this case else
part is mandatory.
&& Operator
In another case, if you have only if
condition you can use &&
operator as:
condition && action;
For instance:
!this.settings && (this.settings = new TableSettings());
FYI: You have to try to avoid using if-else or at least decrease using it and try to replace it with Polymorphism or Inheritance. Go for being Anti-If guy.
Try this
hasName = name ? 'Y' : 'N';
Source: Stackoverflow.com