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

时间:2013-11-05 10:27:19

标签: javascript jquery arrays

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

我有以下Javascript if语句来检查输入到输入字段的值是否正确(在这种情况下,如果输入的值是'england')。

$('input').keyup(function () {
    if ($(this).val().toLowerCase() == 'england') {
        //Stuff
    } else {
        //Other Stuff
    };
});

但是,我想允许替代拼写,所以我需要为每个问题提供一些可能的答案 - 为此使用数组似乎是明智的......

var ans1 = new Array();
ans1[0] = "England";
ans1[1] = "Englund";
ans1[2] = "Ingland";

如何更改if语句以说'如果输入字段值等于数组中的任何值,则执行以下操作'?

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

6 个答案:

答案 0 :(得分:4)

您可以使用.inArray()执行此操作:

if ($.inArray($(this).val(), ans1) > -1) {
    //Stuff
}

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

<强>更新

对于区分大小写的搜索:

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

<强> JS:

if ($.inArray($(this).val().toLowerCase(), ans1) > -1) {
    //Stuff
}

答案 1 :(得分:3)

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

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

答案 2 :(得分:3)

试试这个

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

使用regex和gi修饰符不区分大小写

答案 3 :(得分:0)

这样做

$('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
    };
}
});

答案 4 :(得分:0)

也许您可以考虑检查数组中的每个元素:

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
       };
    }
});

不是最美丽的解决方案,但它应该有效。

答案 5 :(得分:0)

jQuery提供$.inArray

var found = $.inArray('specialword', words) > -1;

请注意,inArray返回找到的元素的索引,因此0表示该元素是数组中的第一个元素。 -1表示未找到该元素。

将拼写放在这样的数组中:

words: [
    "England"
    "Inglund"
    "Ingland"
]
如果找到这个词,

发现将是真的。

如果您希望匹配单词的索引从行中删除> -1

您的代码将是这样的:

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

});