搜索多个阵列

时间:2010-09-15 14:38:19

标签: javascript jquery

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

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'的字符串。

^ _ ^&lt;(不好的措辞......)

1 个答案:

答案 0 :(得分:2)

如果我正确理解你,你想要将你的单独数组合并为一个,以便进行一个循环,但你不想修改原始数组。

如果是这样,试试这个:

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

The .concat() method将创建一个连接在一起的两个Arrays的副本,因此原件不会被修改。该副本作为第二个参数传递给$.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]);
      ...