2008-12-14 6 views
2

J'ai besoin de savoir comment je peux rechercher un tableau pour un texte littéral et l'utiliser comme condition de continuation.Rechercher dans le tableau Javascript pour Regex et retourner Vrai/Faux (0/1) si trouvé

Voici pourquoi: Chaque fois que j'exécute une fonction, je pousse l'ID de la propriété sur laquelle elle agit dans un tableau. J'ai besoin de ma fonction pour vérifier si cet ID est déjà dans le tableau et si c'est le cas, retirez-le et exécutez mon autre fonction (le contraire).

Voici un tableau exemple:

var myArray = new Array(); 
myArray.push([1.000,1.000,"test1"]); 
myArray.push([2.000,2.000,"test2"]); 
myArray.push([3.000,3.000,"test3"]); 

Je sais que la fonction Grep peut rechercher, mais je ne peux pas le faire pour évaluer vrai ou faux si elle trouve quelque chose.

Voici mon utilisation idéale de l'évaluation de recherche.

function searcher(id){ 
    if(myArray.grep(id);){ 
     oppositeFunction(id); 
    }else{ 
     function(id); 
    } 
} 

Répondre

1
function arraytest(){ 
    var myArray = new Array(); 
    myArray.push(["test1"]); 
    myArray.push(["test2"]); 
    myArray.push(["test3"]); 
    for(i=0;i<myArray.length;i++){ 
     if(myArray[i]=="test1"){ 
      successFunction("Celebration\!"); 
     } 
    } 
} 

est une boucle itérative qui recherche le premier objet dans chaque élément de tableau, mais il ne recherche pas des éléments imbriqués tels que dans ma démo Tableau

3

Grep est pas javascript norme Méthode de tableau. Utilisez-vous une bibliothèque javascript qui a ajouté cette méthode à Array? Si oui, vous pouvez vouloir regarder son implémentation. Puisque vous poussez des tableaux dans le tableau, il devrait être capable de rechercher les éléments de chaque élément du tableau, au lieu du tableau lui-même pour l'id. Une fonction pour faire ce que vous voulez serait:

function superContains(aray,id) 
{ 
     var contains = false; 
     for (var i=0, len = aray.length; !contains && i < len; ++i) 
     { 
      var elem = aray[i]; 
      if (elem.constructor && elem.constructor == Array) 
      { 
       contains = superContains(elem,id); 
      } 
      else 
      { 
       contains = elem == id; // or elem.match(id) 
      } 
     } 
     return contains; 
} 
+0

Je pensais que typeof fonctionnerait, mais apparemment typeof (élém) est indéfini si elem est un tableau. – tvanfosson

+0

alert (typeof []); // objet d'alertes – some

3

On dirait que vous voulez utiliser un lieu de hachage MAPP:

var myhash = {}; 

myhash["test1"] = [1.000,1.000]; 
myhash["test2"] = [2.000,2.000]; 
myhash["test3"] = [3.000,3.000]; 

function searcher(id){ 
    if (myhash[id]) { 
     delete myhash[id]; 
     oppositeFunction(id); 
    }else{ 
     normalFunction(id); 
    } 
}