首页 > 解决方案 > 如果字符串等于多个字符串匹配

问题描述

所以我一直在运行下面的 JavaScript 代码

const getUserChoice = userInput => {
  userInput = userInput.toLowerCase();
  if (userInput === 'rock' || 'paper' || 'scissors') {
    return userInput
  } else {
    console.log('Error: please give relevant input \'rock\' \'paper\' or \'scissors\'.')
  }
}

getUserChoice('spock')
console.log(getUserChoice('paper'))

该代码确实正确打印出纸张,但它不打印来自 else 条件的 console.log 错误,条件是第一次调用带有“spock”​​的函数

标签: javascriptconditional-statements

解决方案


一个很常见的错误,你不能这样嵌套:

userInput === 'rock' || 'paper' || 'scissors'

你需要 :

if ( userInput === 'rock' || userInput === 'paper' || userInput === 'scissors' ) {

或者如果你想用一点RegExp.prototype.test()来区分大小写i

if ( /^(rock|paper|scissors)$/i.test(userInput) ) {

或者如果你喜欢 Arrays 而不是使用Array.prototype.includes()

if ( ["rock", "paper", "scissors"].includes(userInput) ) {

推荐阅读