Assign only if condition is true in ternary operator in JavaScript

JavascriptTernary Operator

Javascript 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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestioncodiacView Question on Stackoverflow
Solution 1 - JavascriptBergiView Answer on Stackoverflow
Solution 2 - JavascriptmarekfulView Answer on Stackoverflow
Solution 3 - Javascriptgen_EricView Answer on Stackoverflow
Solution 4 - JavascriptAditya JainView Answer on Stackoverflow
Solution 5 - JavascriptKatie KilianView Answer on Stackoverflow
Solution 6 - JavascriptdpolicastroView Answer on Stackoverflow
Solution 7 - JavascriptGauravView Answer on Stackoverflow
Solution 8 - JavascriptDory DanielView Answer on Stackoverflow
Solution 9 - JavascriptReza SaadatiView Answer on Stackoverflow
Solution 10 - JavascriptKushalSethView Answer on Stackoverflow
Solution 11 - JavascriptRizwanView Answer on Stackoverflow