2

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;

2 Answers 2

6

You have several options:

  1. An if statement

    if (ve.select) {
        price += ve.price;
    }
    

    Or if you prefer it on one line:

    if (ve.select) price += ve.price;
    
  2. 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 as price is presumably a simple variable that's not an issue; with an object property that might be an accessor property it can matter).

  3. Using the && (logical AND) operator:

    ve.select && price += ve.price;
    

    But note that this is really just an if statement in disguise.

  4. Tamás Sallai's answer providing an alternative use of the conditional operator (price += ve.select ? ve.price : 0;).

Sign up to request clarification or add additional context in comments.

Comments

4

I'd reverse the ternary and use +=:

price += ve.select ? ve.price : 0;

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.