Как проверить, есть ли в тексте слова из списка?

Есть список [[BLACK_LIST]]:

night
year
when
you
can

Есть текст [[TEXT]] тип строка:

night has rolled out redesigned 3d hd

Как задать в переменную [[EXIST]] true, если в [[TEXT]] есть слова из [[BLACK_LIST]]?

В [[TEXT]] и в [[BLACK_LIST]] все буквы строчные будут.

Делал когда-то js-код для удаления из многострочного списка строк, которые есть в блеклисте:

[[TEXT]] = [[TEXT]].filter(function(line){
  return [[BLACK_LIST]].every(function(forbiddenWord) {
    return line.toLowerCase().indexOf(forbiddenWord.toLowerCase()) === -1;
  });
});

Но вот как проверить одну строку и присвоить булево значение в результат - ума не приложу.
  • Вопрос задан
  • 109 просмотров
Решения вопроса 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
String.prototype.includes() и Array.prototype.some()

Если устроит, что под бан попадёт и подстрока, например "canon camera", то так:
const text = 'night has rolled out redesigned 3d hd';
const blacklist = [ 'night', 'year', 'when', 'you', 'can' ];

const exist = blacklist.some(word => text.includes(word));

exist // true
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Stalker_RED
@Stalker_RED
function(forbiddenWord) {
    return line.toLowerCase().indexOf(forbiddenWord.toLowerCase()) === -1;
}
Ответ написан
Комментировать
Seasle
@Seasle Куратор тега JavaScript
const blacklist = ['night', 'year', 'when', 'you', 'can'].map((word) => new RegExp(`\\b${word}\\b`, 'gi'));

const hasBlacklisted = (text) => blacklist.some((token) => token.test(text));

console.log(hasBlacklisted('night has rolled out redesigned 3d hd')); // true
console.log(hasBlacklisted('cannon camera')); // false
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы