Как найти слово в строке, которая существует в массиве с помощью ES6? - PullRequest
0 голосов
/ 02 июня 2019

Если у меня есть массив, и я хочу узнать, есть ли какие-либо слова в массиве в строке.Я могу сделать это с традиционным JavaScript, но как бы я это сделал, используя конструкции ES6?

Пример:

 var wordsInTheStringArray = ["red", "green", "blue"].filter(word => "the red cat. the green gopher.");
 wordsInTheStringArray; // ["red", "green"]

Классический метод:

var words = ["red", "green", "blue"]
var string = "the red cat. the green gopher.";
var found = [];

for(var i=0;i<words.length;i++) {
     var hasWord = string.indexOf(words[i])!=-1;
     hasWord ? found.push(words[i]) : 0;
}

console.log(found);

Ответы [ 2 ]

1 голос
/ 02 июня 2019

Это будет искать строки в строке.

var wordsInTheStringArray = ["red", "green", "blue"].filter(word => "the red cat. the green gopher.".includes(word));
console.log(wordsInTheStringArray);
Для поиска слов в строке: (greener не будет учитываться)

var wordsInTheStringArray = ["red", "green", "blue"].filter(word => "the red cat is not greener".split(' ').includes(word));
console.log(wordsInTheStringArray);
Проверка на пунктуацию словами: (red. будет считаться)

var wordsInTheStringArray = ["red", "green", "blue"].filter(word => "the cat is red.".split(' ').map(w => w.split('').filter(l => ![".","\,"].includes(l)).join('')).includes(word));
console.log(wordsInTheStringArray);
1 голос
/ 02 июня 2019

Если я вас правильно понимаю, но не уверен, что понимаю, вы можете использовать наборы, чтобы найти пересечения слов.

const wordsInTheStringArray = ["red", "green", "blue"];
const words = "the red and green cat";
const wordsSplit = words.split(" ");

const matches = wordsInTheStringArray.filter(word => new Set(wordsSplit).has(word));

Это даст вам следующий результат

["red", "green"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...