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'))
添加回答
舉報