Проверить, содержит ли массив строк подстроку данной строки в javascript?

1

У меня есть следующая строка:

var teststring = "Hello"

У меня есть следующий массив строк:

var listofstrings = ["Hellothere", "Welcome", "Helloworld", "Some String"];

Я хочу иметь внутри условной, простой чек, чтобы вернуться, если какая-либо вещь в "listofstrings" соответствует любой части "teststring". Ниже приведен псевдокод:

if(teststring.indexOf(any-part-of-listofstrings) > -1)

Как я могу это сделать? Самый простой способ, о котором я могу думать, это зацикливание, но я смотрю, есть ли лучший способ.

Для циклов я имею в виду несколько строк, таких как:

for(var i = 0; i < listofstrings.length; i++) {
    if(teststring.indexOf(listofstrings[i] > -1) {
        return true;
    }
}

Вышеупомянутое занимает несколько строк, кажется слишком сложным для того, что я пытаюсь сделать...

  • 1
    @ Дэн, этот вопрос не касается моего вопроса. Ответ на этот вопрос требует точного соответствия всей строке. Если вы изменили пример в ответ на [«I», «like», «turtles love me»], то он ломается и возвращает false. Я хочу вернуть true в этом случае, потому что черепахи были частью подстроки хотя бы одного из элементов в массиве.
  • 0
    Это не встроено в JavaScript. Вам придется написать функцию, чтобы сделать это самостоятельно.
Показать ещё 1 комментарий
Теги:

1 ответ

4
Лучший ответ

Вы можете использовать Array#some, а для того, чтобы сделать вещи короче, используйте функцию стрелки, а String#includes вместо String#indexOf:

if(listofstrings.some(str => teststring.includes(str))) {
    // found one
}
  • 1
    Это, конечно, короче и менее сложно, чем цикл for. Если у кого-то есть еще лучшие / более короткие способы сделать это, пожалуйста, поделитесь. Возможно, когда-нибудь в Javascript будет встроена некоторая встроенная функция, чтобы справиться с этим.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню