I am inside a for loop trying to add up a number. The code is working fine, but I was asking myself if there might be shorter form for the following line:
price = ve.select ? price + ve.price : price;
if ve.select
is true, the price is increased by ve.price
, if its false, then price stays.
I am searching for something similar like this line (I know this code snippet does not work):
price = ve.select ? price + ve.price;
I am inside a for loop trying to add up a number. The code is working fine, but I was asking myself if there might be shorter form for the following line:
price = ve.select ? price + ve.price : price;
if ve.select
is true, the price is increased by ve.price
, if its false, then price stays.
I am searching for something similar like this line (I know this code snippet does not work):
price = ve.select ? price + ve.price;
Share
Improve this question
asked Sep 14, 2020 at 11:41
Niklas MeierNiklas Meier
471 gold badge2 silver badges8 bronze badges
2 Answers
Reset to default 5You have several options:
An
if
statementif (ve.select) { price += ve.price; }
Or if you prefer it on one line:
if (ve.select) price += ve.price;
The conditional operator version you've shown:
price = ve.select ? price + ve.price : price;
...but note that it does an unnecessary assignment when
ve.select
is falsy (though asprice
is presumably a simple variable that's not an issue; with an object property that might be an accessor property it can matter).Using the
&&
(logical AND) operator:ve.select && price += ve.price;
But note that this is really just an
if
statement in disguise.Tamás Sallai's answer providing an alternative use of the conditional operator (
price += ve.select ? ve.price : 0;
).
I'd reverse the ternary and use +=
:
price += ve.select ? ve.price : 0;