Assign only if condition is true in ternary operator in JavaScript
JavascriptTernary OperatorJavascript Problem Overview
Is it possible to do something like this in JavaScript?
max = (max < b) ? b;
In other words, assign value only if the condition is true. If the condition is false, do nothing (no assignment). Is this possible?
Javascript Solutions
Solution 1 - Javascript
Don't use the ternary operator then, it requires a third argument. You would need to reassign max
to max
if you don't want it to change (max = (max < b) ? b : max
).
An if-statement is much more clear:
if (max < b) max = b;
And if you need it to be an expression, you can (ab)use the short-circuit-evaluation of AND:
(max < b) && (max = b)
Btw, if you want to avoid repeating variable names (or expressions?), you could use the maximum function:
max = Math.max(max, b);
Solution 2 - Javascript
An expression with ternary operator must have both values, i.e. for both the true and false cases.
You can however
max = (max < b) ? b : max;
in this case, if condition is false, value of max
will not change.
Solution 3 - Javascript
You can just set max
to itself if the condition is false.
max = (max < b) ? b : max;
Or you can try using the &&
operator:
(max < b) && (max = b);
Or to keep your code simple, just use an if
.
if(max < v) max = b;
Solution 4 - Javascript
I think ternary is more suitable try this
(max < b) ? max = b : '';
Solution 5 - Javascript
There isn't a specific operator that isn't the ternary operator, but you can use it like this:
max = (max < b) ? b : max;
Solution 6 - Javascript
I think a better approach could be
max = Math.max(max, b)
Solution 7 - Javascript
You can do something like this:
(max < b) ? max = b : ''
Solution 8 - Javascript
you can try:
(max < b) && (max = b);
look at this example:
let max = 10;
let b = 15;
(max < b) && (max = b)// this will be true
console.log("max=", max);
let maxx = 10
let bb = 5;
(maxx < bb) && (maxx = bb)// this will be false
console.log("maxx=", maxx);
Solution 9 - Javascript
Instead of the ternary operator, you could use Logical AND assignment (&&=).
Basic examples
let output = false; output &&= true; console.log(output)
Reassignment is not possible because output
has been defined as false.
const b = 10; const max = 1; let sum = max < b;
sum &&= 'new value';
console.log(sum);
Returns a string, because the variable sum
has been defined as true.
Solution 10 - Javascript
There was no example of ES6, we can use in this way:
let list = [{id: "abc", name: "test1"}, {id: "xyz", name: "test2"}]
let selectedData = {};
list.some((exp) => {
return (
exp.id == "xyz" &&
((selectedData = exp), true)
);
})
console.log(selectedData);
Added description after a negative vote:
Just adding a description to explain my solution. If you have an array of objects and you want if only one condition satisfies then we can use some
. It will set the selectedData
when the id == "xyz"
. As asked in the question, this will assign value only if the condition is true otherwise selectedData
will be empty.
Solution 11 - Javascript
The ternary operator is used where we have a minimum of two possible outcomes.
let no = 10;
let max = 20;
max = no > max ? no : max
if you only want to use if, not else, then I recommend you to use if not the ternary operator.
let no = 10;
let max = 20;
if (no > max){
max = no
}
if you want to use ternary operator, but don't want to use else part, then you may use this, but this won't be useful in every problem
let no = 10;
let max = 20;
no > max ? max = no : 0
here we are assigning value to a max variable only when the condition is true, otherwise, we are not doing anything