Как использовать несколько условий с троичным оператором

#javascript #jquery

#javascript #jquery

Вопрос:

Есть ли способ использовать три условия внутри троичного оператора?

Или есть какая-нибудь идея получше, чем устаревшие условия if, для достижения этого?

 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>  

Ответ №1:

Вместо этого используйте объект, индексированный tmpgender :

 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>  

Если бы вам пришлось использовать условный оператор, вы могли бы сделать

 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>  

Но это некрасиво и трудно читается, я решительно предпочитаю метод object.

Ответ №2:

Попробуйте следующее

 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>  

Ответ №3:

Я думаю, что mplungjan предоставил хороший ответ, но все же, если вы хотите проверить несколько условий с помощью троичного оператора, то вот вариант:

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

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

</script>
  

Я бы предложил использовать более простые методы, такие как выборка первой буквы.

Ответ №4:

Хммм… В вашем случае нет необходимости в троичном

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