Как проверить, содержит ли строковый массив одну строку в 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().