如何在javascript中从数组中获取一个值

时间:2014-05-04 01:45:07

标签: javascript jquery html

我正在学习javascript而且我已经尝试了一些东西,但我无法弄清楚如何使它工作,到目前为止我的代码是:

HTML

<p>Busca tu auto:</p>
<input type="text" id="search"><span> </span><button>Submit</button>
<p class="hide h1" style="color:green">Your car is available.</p>
<p class="hide h2" style="color:red">Your car is not available.</p>

JS

$(document).ready(function(){
    var cars = ['mercedes','nissan','ferrari','bmw','fiat','toyota','renault','peugeot','kia'];
    $('.hide').hide();
    $('button').click(function(){
        if($('#search').val() == cars[x]){
            $('.h1').show();
            $('.h2').hide();
        } else {
            $('.h2').show();
            $('.h1').hide();
        };
    });
});

我想要做的是当你点击按钮检查汽车是否可用时(它不是真的)。例如,您键入&#34; mazda&#34;并单击按钮,h2将显示,但如果您键入&#34; ferrari&#34;然后单击按钮,h1将显示。

我是否使用上面的代码接近解决方案?

注意:如果您更改&#34; x&#34;在汽车[x]中它可以运行,但只有一辆车。

3 个答案:

答案 0 :(得分:3)

Array.prototype.indexOf

$(document).ready(function(){
    var cars = ['mercedes','nissan','ferrari','bmw','fiat','toyota','renault','peugeot','kia'];
    $('.hide').hide();
    $('button').click(function(){
        if(cars.indexOf($('#search').val()) !== -1){
            $('.h1').show();
            $('.h2').hide();
        } else {
            $('.h2').show();
            $('.h1').hide();
        };
    });
});

http://jsfiddle.net/CWHDv/

答案 1 :(得分:2)

您可以使用Array.indexOf方法搜索数组:

if (cars.indexOf($('#search').val()) !== -1) {
    //your code here
}

当找不到完全匹配时,Array.indexOf方法将返回-1(这包括小写/大写差异),否则它将返回数组中匹配的索引。这意味着如果输入的值在您的数组中,它将返回-1以外的值,因此if - 语句将返回true

要使此不区分大小写,请使用以下命令:

if (cars.indexOf($('#search').val().toLowerCase()) !== -1) {
    //available
} else {
    //unavailable
}

首先将输入转换为小写,然后进行检查。为了实现这一点,存储在数组中的所有值也必须全部为小写字母,如示例所示。

答案 2 :(得分:1)

由于这个问题也被标记为jQuery:

来自jQuery docs

jQuery.inArray( value, array [, fromIndex ] )

这将是:

$.inArray(('#search').val(), cars) !== -1

这也有在IE8及以下工作的优势,Array.prototype.indexOf没有。