Javascript Jquery.val()==**添加多个可能的答案**

Javascript Jquery.val()==**添加多个可能的答案**,javascript,jquery,Javascript,Jquery,我通过以下操作实现了这一点,但作为javascript和jquery的新手,我想知道是否有更简单的方法来添加多个可能的值 if ($("input:first").val().toUpperCase() == "UNITED STATES" || $("input:first").val().toUpperCase() == "USA" || $("input:first").val().toUpperCase() == "AMERICA") { $("#chec

我通过以下操作实现了这一点,但作为javascript和jquery的新手,我想知道是否有更简单的方法来添加多个可能的值

if ($("input:first").val().toUpperCase() == "UNITED STATES" || $("input:first").val().toUpperCase() == "USA" || $("input:first").val().toUpperCase() == "AMERICA") {
                $("#check").text("Correct!").show().fadeOut(5000);
                return true;

在此情况下,仅验证美国最后的答案。

使用:

演示:

试试这个:

if($.inArray($("input:first").val().toUpperCase(), ["UNITED STATES","USA","AMERICA"]) > -1){
            $("#check").text("Correct!").show().fadeOut(5000);
            return true;
}

您可以使用一个对象,其中键是所需的值,并且在操作符中使用

var matches = { 'UNITED STATES': 1, 'USA': 1, 'AMERICA': 1 };

if ($("input:first").val().toUpperCase() in matches) {
   ...
}
根据我的经验,这实际上是出人意料的高效——Javascript非常擅长查找对象的属性,并且它避免了线性数组扫描,因此对于较大的数组,它是
O(logn)
而不是
O(n)


不过,如果你弄乱了
对象。prototype
,就不要使用

为了平衡起见,等效的非jQuery方式(因为jQuery并不自动意味着更好):


$.inArray()
只是
Array.prototype.indexOf
@Alnitak的一个垫片,我以为这是jQuery填补了空白。好消息@iambriansreed嗯,这有点,它填补了旧的蹩脚浏览器的空白,这些浏览器没有
数组.prototype.indexOf
。-)@我刚才看到了。该死的IE7。
if($.inArray($("input:first").val().toUpperCase(), ["UNITED STATES","USA","AMERICA"]) > -1){
            $("#check").text("Correct!").show().fadeOut(5000);
            return true;
}
var matches = { 'UNITED STATES': 1, 'USA': 1, 'AMERICA': 1 };

if ($("input:first").val().toUpperCase() in matches) {
   ...
}
if(["UNITED STATES", "USA", "AMERICA"].indexOf($('input:first').val().toUpperCase()) > -1) {
    $("#check").text("Correct!").show().fadeOut(5000);
    return true;
}