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'))
添加回答
举报