Как проверить, содержит ли строковый массив одну строку в JavaScript?
У меня есть строковый массив и одна строка. Я хотел бы проверить эту строку на значения массива и применить условие к результату - если массив содержит строку do "A", иначе "B".
Как я могу это сделать?
Ответы
Ответ 1
Существует метод indexOf
, который имеет все массивы (кроме Internet Explorer 8 и ниже), которые возвращают индекс элемента в массив или -1, если он не находится в массиве:
if (yourArray.indexOf("someString") > -1) {
//In the array!
} else {
//Not in the array
}
Если вам нужно поддерживать старые браузеры IE, вы можете polyfill использовать этот метод, используя код статью MDN.
Ответ 2
Вы можете использовать метод indexOf
и "расширить" класс Array с помощью метода contains
следующим образом:
Array.prototype.contains = function(element){
return this.indexOf(element) > -1;
};
со следующими результатами:
["A", "B", "C"].contains("A")
равно true
["A", "B", "C"].contains("D")
равно false
Ответ 3
var stringArray = ["String1", "String2", "String3"];
return (stringArray.indexOf(searchStr) > -1)
Ответ 4
Создайте этот прототип функции:
Array.prototype.contains = function ( needle ) {
for (i in this) {
if (this[i] == needle) return true;
}
return false;
}
а затем вы можете использовать следующий код для поиска в массиве x
if (x.contains('searchedString')) {
// do a
}
else
{
// do b
}
Ответ 5
Это сделает это за вас:
function inArray(needle, haystack) {
var length = haystack.length;
for(var i = 0; i < length; i++) {
if(haystack[i] == needle)
return true;
}
return false;
}
Я нашел его в вопросе JavaScript-эквивалент PHP in_array().