Javascript 将提示输入与数组值匹配

Javascript 将提示输入与数组值匹配,javascript,arrays,Javascript,Arrays,我正在玩一些我刚刚开始学习的基本js,到目前为止,我有下面的代码。我试图询问用户他们的名字,然后告诉他们是否与赛车手同名(从我的数组driversNames) 如果他们与赛车手同名,它会告诉他们有,如果没有,它会告诉他们没有。然而,我有一种感觉,我这里有点不对劲:如果(yourName===driversNames)但我无法理解 我在提示符中输入什么并不重要,它总是说对不起,你没有相同的名字 var driversNames = ["Lewis", "Fernando", "Sebastian"

我正在玩一些我刚刚开始学习的基本js,到目前为止,我有下面的代码。我试图询问用户他们的名字,然后告诉他们是否与赛车手同名(从我的数组driversNames

如果他们与赛车手同名,它会告诉他们有,如果没有,它会告诉他们没有。然而,我有一种感觉,我这里有点不对劲:如果(yourName===driversNames)但我无法理解

我在提示符中输入什么并不重要,它总是说对不起,你没有相同的名字

var driversNames = ["Lewis", "Fernando", "Sebastian", "Jenson", "Daniel"]
for (var i = 0; i < driversNames.length; i++) {
  console.log(driversNames[i] + " " + "is a drivers name");
}

var yourName = prompt("What is your name?")

console.log("Your name is" + " " + yourName)

if (yourName === driversNames) {
  console.log("Awesome" + " " + yourName + " " + "you share the same name as a Formula 1 driver!")
} else {
  console.log("Sorry" + " " + yourName + " " + "you don't have the same name as any Formula 1 drivers")
}
var driversNames=[“刘易斯”、“费尔南多”、“塞巴斯蒂安”、“简森”、“丹尼尔”]
对于(变量i=0;i
您正在将字符串与数组进行比较,因此比较结果将返回false。不过,您有几个选项可以解决这个问题—我将解释如何使用循环检查每个字符串,以及如何使用
indexOf

循环:您需要循环遍历
driversNames
数组中的每个元素,并对每个元素进行比较。这是手动方式

var sameName = false; //flag to keep track of if name matches or not
driversNames.forEach(function(name) { //loop through each name in driversNames
    if(yourName === name) { //compare your name to driver name
        sameName = true; //if match, set flag to true
    }
}); //loop ends here
if(sameName) { //if flag is true, a name matched
        console.log("Awesome" + " " + yourName + " " + "you share the same name as a Formula 1 driver!"); //Console log success statement
} else { // else, no name matched
      console.log("Sorry" + " " + yourName + " " + "you don't have the same name as any Formula 1 drivers"); //console log fail statement
}
IndexOf:这个方法使用更少的代码行,但不是在所有浏览器上都兼容——我相信IE8下的任何东西在使用这个例子时都会中断。但如果兼容性不是一个问题,它看起来是这样的:

if (driversNames.indexOf(yourName) > -1) { //indexof returns -1 for no match, and a number for match
  console.log("Awesome" + " " + yourName + " " + "you share the same name as a Formula 1 driver!"); //console log success statement
} else {
  console.log("Sorry" + " " + yourName + " " + "you don't have the same name as any Formula 1 drivers"); //console log fail statement
}

indexof
稍微优雅一点,但很容易忘记兼容性问题。代码被注释,但只是为了解释它:数组有一个可以调用的方法,名为indexOf(),它接受一个参数。然后,此方法将检查该参数是否在数组中,如果在数组中,则返回一个值,该值是它在数组中的位置。如果它不在数组中,它将返回
-1

如果(yourName===driversNames)您在这一行中犯了一个错误。 它不会将您的姓名与
driversNames
中的姓名进行比较。最简单的方法:使用
indexOf
方法。所以这条线应该如下所示

if (driversNames.indexOf(yourName) > -1) //Get Name otherwise no 
和你的例子,也链接


感谢

使用
indexOf
检查数组是否包含给定值:
['foo'].indexOf('foo')>(-1)
如果值不在数组中,它将返回
-1
我非常感谢简短的回答和注释行,以帮助我理解感谢@millerbr我添加了indexOf,它正是我所希望的。我也要看看兼容浏览器的版本,因为我现在是一块海绵,任何我能尝试和理解的东西都会对我有很大帮助!