简体   繁体   中英

Issue on Using Multi Conditions with a Ternary Operator

Can you please take a look at this and let me know is there a way to use 3 conditions inside a Ternary Operator?

Or is there any better idea rather than legacy if conditions to achieve this?

 let tmpgender = $('#gender').text().trim(); let gender = null; tmpgender == "female" ? gender : 'f'; tmpgender == "male" ? gender : 'm'; tmpgender == "unisex" ? gender : 'u'; console.log(gender); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div id="gender">female</div> 

Use an object indexed by tmpgender instead:

 const genders = { female: 'f', male: 'm', unisex: 'u' }; const tmpgender = $('#gender').text().trim(); const gender = genders[tmpgender]; console.log(gender); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div id="gender">female</div> 

If you had to use the conditional operator, you could do

 const genders = { female: 'f', male: 'm', unisex: 'u' }; const tmpgender = $('#gender').text().trim(); const gender = tmpgender === 'female' ? 'f' : tmpgender === 'male' ? 'm' : tmpgender === 'unisex' ? 'u' : 'unknown'; console.log(gender); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div id="gender">female</div> 

But that's ugly and hard to read, I strongly prefer the object method.

Try Following

 let tmpgender = $('#gender').text().trim(); let gender = tmpgender == "female" ? 'f' : tmpgender == "male" ? 'm' : 'u'; console.log(gender); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div id="gender">female</div> 

Hmmm... In your case no need for ternary

 const tmpgender = "male"; let gender = tmpgender.charAt(0); console.log(gender); 

I think mplungjan provided a good answer but still If you want to check multiple conditions with Ternary operator, then here is an option:

<script>
    var tmpgender = $('#gender').text().trim();
    var gender = null;

    gender = tmpgender == "female" ? 'f': tmpgender == "male" ? 'm' : tmpgender == "unisex" ? 'u' : null;

</script>

I would suggest to use simpler methods like fetching first letter.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM