如何在Javascript中查找某个值是否与数组中的某个值匹配

如何在Javascript中查找某个值是否与数组中的某个值匹配,javascript,jquery,arrays,Javascript,Jquery,Arrays,仅供参考:这是一个简单的测验,每个答案只有一个输入字段 我使用下面的Javascript if语句来检查输入字段中输入的值是否正确(在本例中,如果输入的值是“england”) 然而,我想考虑其他拼写,所以我需要为每个问题提供一些可能的答案-使用数组似乎是明智的,因为 var ans1 = new Array(); ans1[0] = "England"; ans1[1] = "Englund"; ans1[2] = "Ingland"; 如何将if语句更改为“如果输入字段值等于数组中的任何值

仅供参考:这是一个简单的测验,每个答案只有一个输入字段

我使用下面的Javascript if语句来检查输入字段中输入的值是否正确(在本例中,如果输入的值是“england”)

然而,我想考虑其他拼写,所以我需要为每个问题提供一些可能的答案-使用数组似乎是明智的,因为

var ans1 = new Array();
ans1[0] = "England";
ans1[1] = "Englund";
ans1[2] = "Ingland";
如何将if语句更改为“如果输入字段值等于数组中的任何值,则执行以下操作”

任何帮助都将不胜感激!谢谢。

您可以使用以下方法完成此操作:

这里,代码
$.inArray($(this).val(),ans1)
将在数组
ans1
中搜索指定的值,例如
England
,并返回其索引(如果未找到,则返回-1)

更新

对于区分大小写的搜索:

  • 首先以小写形式输入数组中的所有值
  • 接下来使用下面的代码:-
JS:

if ($.inArray($(this).val().toLowerCase(), ans1) > -1) {
    //Stuff
}
你喜欢这样吗

$('input').keyup(function () {

var ans1 = new Array();
ans1[0] = "England";
ans1[1] = "Englund";
ans1[2] = "Ingland";
for(int i=0;i<ans1.length;i++)
{

    if ($(this).val().toLowerCase() ==ans1[i]) {
        //Stuff
    } else {
        //Other Stuff
    };
}
});
$('input').keyup(函数(){
var ans1=新数组();
ans1[0]=“英格兰”;
ans1[1]=“Englund”;
ans1[2]=“英格兰”;

对于(int i=0;i),也许您可以考虑检查数组中的每个元素:
var ans1 = new Array();
ans1[0] = "England";
ans1[1] = "Englund";
ans1[2] = "Ingland";

$('input').keyup(function () {
    for (var i = 0; i < ans1.length; i++) {
       if ($(this).val().toLowerCase() == ans1[i]) {
        //Stuff
         } else {
        //Other Stuff
       };
    }
});
var ans1=新数组();
ans1[0]=“英格兰”;
ans1[1]=“Englund”;
ans1[2]=“英格兰”;
$('input').keyup(函数(){
对于(var i=0;i
不是最漂亮的解决方案,但它应该可以工作。

您可以使用数组的方法,如果数组中不存在该值,则返回-1:

//if answer is in array
if(array.indexOf(answer) != -1){
    //do stuff
}else{
  //do stuff
}
试试这个

if(this.value.match(/^(England|Englund|Ingland)$/i))

将regex和gi修饰符用于不区分大小写的jQuery提供了
$。inArray

var found = $.inArray('specialword', words) > -1;
请注意,inArray返回找到的元素的索引,因此0表示该元素是数组中的第一个元素。-1表示未找到该元素

将拼写放入如下数组:

words: [
    "England"
    "Inglund"
    "Ingland"
]
$('input').keyup(function () {
    var found = $.inArray($(this).val(), words);
    found > -1 ? //Stuff : //otherStuff;

});
如果单词被找到,则find将为true

如果需要匹配单词的索引,请从行中删除
-1

您的代码如下所示:

words: [
    "England"
    "Inglund"
    "Ingland"
]
$('input').keyup(function () {
    var found = $.inArray($(this).val(), words);
    found > -1 ? //Stuff : //otherStuff;

});

this.value
=
Inglandia
?@thg435 Inglandia?:没错!现在又增加了7个字符,让我来发布吧。我想thg435的要点是你的正则表达式应该是
/^(England | Englund | Ingland | Ingland)$/I
。现在看起来不错,值得称赞!这很有效,但只有在删除.toLowerCase()函数,这意味着如果用户以大写字母输入值,那么它将不会接受答案。几乎。@user2586455:我已经按照您指出的更新了答案!太好了!所以我不适合用大写字母输入数组值。谢谢您的帮助。我相信这对许多人来说是非常有意义的,但答案/代码对我来说不够具体我。无论如何,谢谢!您本可以使用hashmap或.inArray()来代替,但它已经在另一个解决方案中提出:)