2010-09-15 4 views
1

Hey, je recherche chaque tableau séparément pour des entrées spécifiques d'un utilisateur.Rechercher une multitude de tableaux

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

Est-il possible que je peux rechercher tous les tableaux à la fois, comme je vais devoir rechercher chaque tableau pour une chaîne.

ahem

donc - Si je tapais « ae », alors je le veux de passer par tous les éléments de chaque tableau et retourner toutes les chaînes avec « ae » en elle.

^_^< (mauvais termes ...)

Répondre

2

Si je vous comprends bien, vous voulez consolider vos tableaux distincts en un seul dans le but de faire une boucle, mais vous ne voulez pas pour modifier les tableaux d'origine.

Si oui, essayez ceci:

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

The .concat() method crée une copie des deux tableaux réunis en un seul, de sorte que les originaux ne sont pas modifiés. Cette copie est transmise à la méthode $.inArray() en tant que deuxième paramètre.


EDIT:

De votre commentaire ci-dessous, il semble que vous voulez tester si i.val() est une sous-chaîne de tous les éléments du tableau.

Si c'est vrai, vous n'utiliserez probablement pas $.inArray, mais utiliserez plutôt $.each() pour parcourir le tableau et tester la valeur.

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

Excellent, cela semble bien jusqu'à présent! Je me demandais comment je ferais pour chercher dans chaque chaîne dans le tableau aussi bien? –

+0

@Neurofluxation - Donc vous voulez chercher pour voir si 'i.val()' est dans n'importe quelle partie de l'un des éléments de tableau? Est-ce que ça sonne bien? Je vais mettre à jour dans une minute. – user113716

+0

Parfaitement expliqué :) –