如何在Javascript中查找某个值是否与数组中的某个值匹配
仅供参考:这是一个简单的测验,每个答案只有一个输入字段 我使用下面的Javascript if语句来检查输入字段中输入的值是否正确(在本例中,如果输入的值是“england”) 然而,我想考虑其他拼写,所以我需要为每个问题提供一些可能的答案-使用数组似乎是明智的,因为如何在Javascript中查找某个值是否与数组中的某个值匹配,javascript,jquery,arrays,Javascript,Jquery,Arrays,仅供参考:这是一个简单的测验,每个答案只有一个输入字段 我使用下面的Javascript if语句来检查输入字段中输入的值是否正确(在本例中,如果输入的值是“england”) 然而,我想考虑其他拼写,所以我需要为每个问题提供一些可能的答案-使用数组似乎是明智的,因为 var ans1 = new Array(); ans1[0] = "England"; ans1[1] = "Englund"; ans1[2] = "Ingland"; 如何将if语句更改为“如果输入字段值等于数组中的任何值
var ans1 = new Array();
ans1[0] = "England";
ans1[1] = "Englund";
ans1[2] = "Ingland";
如何将if语句更改为“如果输入字段值等于数组中的任何值,则执行以下操作”
任何帮助都将不胜感激!谢谢。您可以使用以下方法完成此操作:
这里,代码$.inArray($(this).val(),ans1)
将在数组ans1
中搜索指定的值,例如England
,并返回其索引(如果未找到,则返回-1)
更新
对于区分大小写的搜索:
- 首先以小写形式输入数组中的所有值
- 接下来使用下面的代码:-
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()来代替,但它已经在另一个解决方案中提出:)