2010-09-15 115 views
1

嘿,我正在爲每個陣列分別搜索來自用戶的特定輸入。搜索多個陣列

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

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

回答

2

如果我正確認識你,你要鞏固您單獨的陣列到一個做一個循環的目的,但你不想修改原始數組。

如果是的話,試試這個:

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