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?
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 .
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
var stringArray = ["String1", "String2", "String3"];
return (stringArray.indexOf(searchStr) > -1)
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
}
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 ().