我尝试使用IF添加所有组合,但是要写很多东西。如果我得到了用户标志和另一个用户标志,例如白羊座和白羊座,我会发送输出(“很多”),但是我有12 * 12 = 144个组合!
有什么选择可以缩短时间吗?
<script>
function hatama() {
signYours= $("input[name='sign1']").val()
signFriend=$("input[name='sign2']").val()
//Aries
if (signYours=="Aries" && signFriend=="Gemini")|| (signYours=="Aries" && signFriend=="Leo")|| (signYours=="Aries" && signFriend=="Saggitarious")|| (signYours=="Aries" && signFriend=="Libra")||(signYours=="Aries" && signFriend=="Aquarius")
$("#output").val("High");
if (signYours=="Aries" && signFriend=="Aries")||(signYours=="Aries" && signFriend=="Virgo") || (signYours=="Aries" && signFriend=="Capricon") ||
$("#output").val("Medium");
if (signYours=="Aries" && signFriend=="Pisces") || (signYours=="Aries" && signFriend=="Cancer")|| (signYours=="Aries" && signFriend=="Scorpio")
$("#output").val("Low");
//Taurus
if (signYours=="Taurus" && signFriend=="Virgo")|| (signYours=="Taurus" && signFriend=="Capricon")||(signYours=="Taurus" && signFriend=="Taurus")||(signYours=="Taurus" && signFriend=="Cancer")||(signYours=="Taurus" && signFriend=="Scorpio")||(signYours=="Taurus" && signFriend=="Pisces")
$("#output").val("High");
if (signYours=="Taurus" && signFriend=="Aquarius")||(signYours=="Taurus" && signFriend=="Taurus")
$("#output").val("Medium");
if (signYours=="Taurus" && signFriend=="Gemini")|| (signYours=="Taurus" && signFriend=="Leo")||(signYours=="Taurus" && signFriend=="Saggitarious")
$("#output").val("Low");
</script>
最佳答案
一种选择是使用一个对象,该对象的属性是您的符号,其值是具有High
,Medium
和Low
属性的对象,其值是相关的符号:
// Object indexed by your own sign:
const signs = {
Aries: {
High: ['Gemini', 'Leo', 'Saggitarious', 'Libra', 'Aquarius'],
Medium: ['Aries', 'Virgo', 'Capricon'],
Low: ['Pisces', 'Cancer', 'Scorpio']
}
// ...
};
const getAssoc = (signYours, signFriend) => {
const yourObj = signs[signYours];
if (!yourObj) {
return "Your sign is invalid";
}
const foundEntry = Object.entries(yourObj)
.find(([_, arr]) => arr.includes(signFriend));
if (!foundEntry) {
return "Friend's sign is invalid";
}
return foundEntry[0];
};
console.log(getAssoc('Aries', 'Gemini'));
console.log(getAssoc('Aries', 'Scorpio'));
因此,对于您的代码:
function hatama() {
const signYours = $("input[name='sign1']").val();
const signFriend = $("input[name='sign2']").val();
$("#output").val(getAssoc(signYours, signFriend));
}
(确保始终声明变量,否则将在全局对象上隐式创建属性,应避免使用)
如果需要为每个可能的符号在
signs
上设置属性,则如果存在高/中/低关联的模式,则可能有一种更有效的方法。关于javascript - 较短的代码,而不是对所有组合使用IF,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55628487/