проверить, есть ли в строке хотя бы одно из этих слов - PullRequest
0 голосов
/ 13 июля 2020

вместо того, чтобы делать что-то вроде:

 if( myString.includes("book")||myString.includes("red")||myString.includes("pen")){
    ...
  }

Мне нужно что-то вроде:

 if( myString.includesAnyOf("book","red","pen")){
    ...
  }

чистое Js или решение Loda sh подойдет для меня.

Ответы [ 4 ]

2 голосов
/ 13 июля 2020

Простое регулярное выражение с тестом

var words = /(book|red|pen)/;
console.log(words.test("I use a pen."));
console.log(words.test("I use a red hen."));
console.log(words.test("I use a blue book."));
console.log(words.test("I use a hen."));
console.log(words.test("I use an open door."));

Если вы хотите использовать строковый метод, это Array some и Строка включает .

var words = ["book","red","pen"];

const checkString = str =>
  words.some(word => str.includes(word));
  
  
console.log(checkString("I use a pen."));
console.log(checkString("I use a red hen."));
console.log(checkString("I use a blue book."));
console.log(checkString("I use a hen."));
console.log(checkString("I use an open door."));
1 голос
/ 13 июля 2020
["book","red","pen"].some(ele => string.includes(ele));

function stringCheck(string){
  return ["book","red","pen"].some(ele => string.includes(ele));
}

console.log(stringCheck("testing for words"));
console.log(stringCheck("what if I use book?"));
0 голосов
/ 13 июля 2020

Нет ничего встроенного, что сделало бы это за вас, вам придется написать для него функцию или использовать этот единственный лайнер, который использует функцию карты для преимущества:

substringsArray.some(substring=>yourBigString.includes(substring))

если вы ' Если вы ищете более удобочитаемое решение, тогда будет достаточно цикла по массиву.

const yourstring = 'some string'; // the string to check against
const substrings = ['foo','bar']; // search keys

while(substrings.length--) {
   if(yourstring.indexOf(substrings[length])!=-1) {
       // one of the substrings is in yourstring
   }
}
0 голосов
/ 13 июля 2020

Вы можете использовать фильтр

["book","red","pen"].filter(value => myString.includes(value))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...