2010-08-06 8 views
4

esprit est allé vide cet après-midi et ne peux pas pour la vie de me trouver la bonne façon de le faire:javascript Si la déclaration, en regardant à travers un tableau

if(i!="3" && i!="4" && i!="5" && i!="6" && i!="7" && i!="8" && i!="9" && i!="2" && i!="19" && i!="18" && i!="60" && i!="61" && i!="50" && i!="49" && i!="79" && i!="78" && i!="81" && i!="82" && i!="80" && i!="70" && i!="90" && i!="91" && i!="92" && i!="93" && i!="94"){ 

//do stuff 

} 

tous ces chiffres doivent être dans un tableau, alors je peux vérifier pour voir si "i" n'est pas égal à 1 d'entre eux.

merci>. <

+0

voir http://stackoverflow.com/questions/237104/javascript-array-containsobj – fearofawhackplanet

+0

double possible de [La meilleure façon de trouver un élément dans un tableau JavaScript? ] (http://stackoverflow.com/questions/143847/best-way-to-find-an-item-in-a-javascript-array) –

+0

@fearofawhackplanet, vous avez raison aussi. J'ai aussi marqué cette fonction en tant que dupe. –

Répondre

11
var a = [3,4,5,6,7,8,9]; 

if (a.indexOf(2) == -1) { 
    // do stuff 
} 

indexOf retours -1 si le nombre est pas trouvé. Il renvoie autre chose que -1 s'il est trouvé. Change ta logique si tu veux. Entourez les nombres entre guillemets si vous avez besoin de chaînes (a = ['1','2']). Je ne sais pas de quoi vous parlez, alors je leur ai fait des chiffres.

IE et d'autres obscurs/navigateurs plus anciens ont besoin de la méthode indexOf:

if (!Array.prototype.indexOf) 
{ 
    Array.prototype.indexOf = function(elt /*, from*/) 
    { 
    var len = this.length >>> 0; 

    var from = Number(arguments[1]) || 0; 
    from = (from < 0) 
     ? Math.ceil(from) 
     : Math.floor(from); 
    if (from < 0) 
     from += len; 

    for (; from < len; from++) 
    { 
     if (from in this && 
      this[from] === elt) 
     return from; 
    } 
    return -1; 
    }; 
} 
+1

en voyant cela me fait aimer encore plus jQuery. – fearofawhackplanet

+0

Yeh moi aussi, merci meder fonctionne parfaitement –

0

Cette solution est multi-navigateur:

var valid = true; 
var cantbe = [3, 4, 5]; // Fill in all your values 
for (var j in cantbe) 
    if (typeof cantbe[j] === "number" && i == cantbe[j]){ 
     valid = false; 
     break; 
    } 

valid sera true si i n'est pas un « mauvais 'valeur, false sinon.

+3

C'est une très mauvaise habitude d'utiliser 'for ... in' sur les tableaux. –

+0

Je ne dirais pas que c'est une mauvaise pratique, tant que vous savez ce que vous faites. J'ai ajouté une vérification: 'typeof cantbe [j] ===" nombre "'. –

+0

non, c'est toujours une mauvaise pratique. – lincolnk

2

Mon esprit a fait cette solution:

function not(dat, arr) { //"not" function 
for(var i=0;i<arr.length;i++) { 
    if(arr[i] == dat){return false;} 
} 
return true; 
} 

var check = [2,3,4,5,6,7,8,9,18,19,49,50,60,61,70,78,79,80,81,82,90,91,92,93,94]; //numbers 

if(not(i, check)) { 
//do stuff 
} 
+0

Un avantage de l'utilisation de 'indexOf' est qu'il est déjà intégré dans la plupart des navigateurs modernes. –

Questions connexes