需要有关jQuery $ .inArray()的帮助

时间:2010-11-12 21:17:33

标签: jquery arrays match each

有人可以告诉我这段代码有什么问题吗?

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 个答案:

答案 0 :(得分:3)

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

You can test it here。另请注意,对于非元素集使用$.each(),没有理由创建无效的jQuery对象来运行循环。

答案 1 :(得分:0)

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