web-dev-qa-db-fra.com

Comment vérifier si un tableau de chaînes contient une chaîne en JavaScript?

J'ai un tableau de chaînes et une chaîne. J'aimerais tester cette chaîne par rapport aux valeurs du tableau et appliquer une condition au résultat - si le tableau contient la chaîne, faites "A", sinon faites "B".

Comment puis je faire ça?

211
gtludwig

Il existe une méthode indexOf utilisée par tous les tableaux (à l'exception d'Internet Explorer 8 et inférieur) qui renverra l'index d'un élément dans le tableau, ou -1 si ce n'est pas dans le tableau:

if (yourArray.indexOf("someString") > -1) {
    //In the array!
} else {
    //Not in the array
}

Si vous devez prendre en charge les anciens navigateurs IE, vous pouvez procéder à une polyfilliation de cette méthode à l'aide du code contenu dans l'article de MDN .

384
James Allardice

Vous pouvez utiliser la méthode indexOf et "étendre" la classe Array avec la méthode contains comme ceci:

Array.prototype.contains = function(element){
    return this.indexOf(element) > -1;
};

avec les résultats suivants:

["A", "B", "C"].contains("A") est égal à true

["A", "B", "C"].contains("D") est égal à false

54
fableal
var stringArray = ["String1", "String2", "String3"];

return (stringArray.indexOf(searchStr) > -1)
25
FixMaker

Créer ce prototype de fonction:

Array.prototype.contains = function ( needle ) {
   for (i in this) {
      if (this[i] == needle) return true;
   }
   return false;
}

et alors vous pouvez utiliser le code suivant pour rechercher dans le tableau x

if (x.contains('searchedString')) {
    // do a
}
else
{
      // do b
}
8
eridanix

Cela le fera pour vous:

function inArray(needle, haystack) {
    var length = haystack.length;
    for(var i = 0; i < length; i++) {
        if(haystack[i] == needle)
            return true;
    }
    return false;
}

Je l'ai trouvé dans la question Stack Overflow équivalent JavaScript de PHP in_array ().

5
ollie