1 回答
TA貢獻1818條經驗 獲得超3個贊
以下是您的代碼錯誤。
switch語句不能有兩個變量。
ch1, ch2將評估為ch2。'r' && 'p'將始終評估為true。因為r和p都是真實的價值觀。
您可以按照以下步驟進行操作:
創建一個具有鍵作為返回值的對象
p,q,r。它們的值將是要在原始代碼中檢查的兩個值的數組。例如p將有數組['r','p']你
Object.entries在對象上。并find()在條目上使用。內部
find()將值ch1和ch2數組按兩種順序放置,即[ch1,ch2]和[ch2,ch1]使用以下命令檢查數組中的任何一個是否等于對象的任何值
every()如果是,則返回密鑰,否則返回
'draw'
function RPS(ch1, ch2){
const obj = {
p:['r','p'],
r:['r','s'],
q:['p','s']
}
let entry = Object.entries(obj)
.find(([k,v]) =>
[ch1,ch2].every((x,i) => x === v[i]) ||
[ch2,ch1].every((x,i) => x === v[i])
)
return entry ? entry[0] : 'draw';
}
console.log(RPS('s','p'))
添加回答
舉報
