搜索多个阵列

搜索多个阵列

问题描述:

嘿,我正在为每个阵列分别搜索来自用户的特定输入。搜索多个阵列

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”返回所有的字符串。

^_^<(坏字眼...)

如果我正确认识你,你要巩固您单独的阵列到一个做一个循环的目的,但你不想修改原始数组。

如果是的话,试试这个:

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

The .concat() method将创建两个数组的副本结合在一起为一体,所以原稿不被修改。该副本作为第二个参数传递给$.inArray()方法。


编辑:

从下面的评论,这听起来像你想测试,如果i.val()是阵列中的任何项目的子字符串。

如果是这样,您可能不会使用$.inArray,而是使用$.each()来迭代Array并测试该值。

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]); 
     ... 
+0

非常好,这看起来不错!我想知道如何去搜索数组中的每个字符串? – 2010-09-15 14:59:28

+0

@Neurofluxation - 所以你想搜索'i.val()'是否在任何数组项的任何部分?这听起来是对的吗?我会在一分钟后更新。 – user113716 2010-09-15 15:25:55

+0

完美解释:) – 2010-09-15 15:32:34