代码之家  ›  专栏  ›  技术社区  ›  Barrie Reader

搜索多个数组

  •  1
  • Barrie Reader  · 技术社区  · 15 年前

    嘿,我在每个数组中分别搜索用户的特定输入。

    if ($.inArray(i.val(), helloInputArray) > -1) { //IF HELLO
                        if (hello == 0) { //HAVE YOU ALREADY SAID HI?
                            r = Math.floor(Math.random()*4);                        
                            o.html(o.html()+helloOutputArray[r]);
                            hello = 1;
                            i.val('');
                        } else { //IF YOU'VE ALREADY SAID HI...
                            o.html(o.html()+'I already said hi to you!<br />');
                            i.val('');
                        }
                    } else if ($.inArray(i.val(), byeInputArray) > -1) { //IF GOODBYE
                        if (bye == 0) {
                            r = Math.floor(Math.random()*4);                        
                            o.html(o.html()+byeOutputArray[r]);
                            i.val('');
                        } else {
                            o.html(o.html()+'I already said goodbye... Go away!');
                            i.val('');
                        }
                    }
    

    啊哼

    所以-如果我键入'ae',那么我希望它遍历每个数组中的每个项,并返回所有包含'ae'的字符串。

    1 回复  |  直到 15 年前
        1
  •  2
  •   user113716    15 年前

    如果我理解正确的话,您希望将单独的数组合并为一个数组,以便执行一个循环,但不希望修改原始数组。

    如果是,请尝试以下操作:

    if( $.inArray( i.val(), helloInputArray.concat( byeOutputArray) ) > -1 ) {
        ...
    

    The .concat() method 将创建两个数组的副本,这两个数组作为一个数组连接在一起,因此不会修改原始数组。那份副本交给了 $.inArray()


    编辑:

    从你下面的评论来看,听起来你想测试 i.val()

    如果是这样的话,你可能不会使用 $.inArray ,而是将使用 $.each()

    var isInArray = false;
    var value = i.val();
    
    $.each( helloInputArray.concat(byeOutputArray), function(i,val) {
        if( val.indexOf( value ) > -1 ) {
            isInArray = true;
            return false;
        }
    });
    
    if ( isInArray ) > -1) { 
        if (hello == 0) { 
            r = Math.floor(Math.random()*4);                        
            o.html(o.html()+helloOutputArray[r]);
          ...