Нужна помощь в отношении jQuery $ .inArray () - PullRequest
0 голосов
/ 13 ноября 2010

Может кто-нибудь сказать мне, что не так с этим кодом ??

jQuery(document).ready(function(){

    var val = ["Hourly", "Daily", "Weekly", "Monthly", "Yearly"];
    var myArr = ["Weekly", "something"];

    $( myArr ).each(function( j ){
        if ( $.inArray( myArr[j] == val ) ) {
            alert( 'yes, Matched !!' );
            console.log(  myArr[j] );
        } else {
            alert( 'Nops ' );
        }
    });

    //console.log( val );
});

Мне нужно сопоставить элементы массива, я использовал $.inArray(), но он никогда не переходит в состояние ELSE, даже если онсуществуют в массиве.Любая помощь будет признательна.

Ответы [ 2 ]

3 голосов
/ 13 ноября 2010

$.inArray() принимает два аргумента, значение и массив, и возвращает > -1, если найдет совпадение, поэтому оно должно быть таким:

jQuery(document).ready(function(){
   var val = ["Hourly", "Daily", "Weekly", "Monthly", "Yearly"];
   var myArr = ["Weekly", "something"];
   $.each(myArr, function(i, v) {
     if ($.inArray(v, val) != -1) {
        alert( 'yes, Matched !!' );
        console.log(v);
     } else {
        alert( 'Nops ' );
     }
   });
});

Вы можете проверить это здесь . Также обратите внимание на использование $.each() для неэлементных наборов, нет причин создавать недопустимый объект jQuery для запуска цикла.

0 голосов
/ 13 ноября 2010
jQuery(document).ready(function() {

    var val = ["Hourly", "Daily", "Weekly", "Monthly", "Yearly"];
    var myArr = ["Weekly", "something"];

    $(myArr).each(function(j) {
        if ($.inArray(myArr[j], val) != -1) {
            alert('yes, Matched !!');
        } else {
            alert('Nops ');
        }
    });

});

$.inArray возвращает -1, когда не находит значение в массиве, в противном случае возвращается позиция в массиве, которая может быть 0.

...