#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);