@nastinapetrova555

Как реализовать ф-ю, которая заменяет каждое вхождение указанных слов в предложении на заданную последовательность и возвращает полученную строку?

Не могу решить эту задачу, если на входе вводится массив строк, на которые нужно проверять исходную строку.
Условие такое:
Реализуйте и экспортируйте по умолчанию функцию, которая заменяет каждое вхождение указанных слов в предложении на последовательность $#%! и возвращает полученную строку. Аргументы:
- Текст
- Набор стоп слов

Словом считается любая непрерывная последовательность символов, включая любые спецсимволы (без пробелов).

Примеры вывода

const str = 'When you play the game of thrones, you win or you die';
const result = makeCensored(str, ['die', 'play']);
// When you $#%! the game of thrones, you win or you $#%!
 
const str = 'chicken chicken? chicken! chicken';
const result = makeCensored(str, ['?', 'chicken']);
// '$#%! chicken? chicken! $#%!';<code lang="javascript">


//Я сделала такую функцию, но она работает только если на входе дается начальная строка и одно слово, которое в тексте надо заменить. Но функция должна работать, если вместо слова вводится массив из нескольких слов. 


function makeCensored(str, value) {
  let arr = str.split(' ');
  const newArr = [];
  for (let word of arr) {
    if (word === value) {
      newArr.push('$#%!');
    } else {
      newArr.push(word);
    }
 }
return newArr.join(' ');
};


//Как можно это реализовать? Пыталась делать цикл на перебор слов в массиве и проверять на наличие каждого из них, но она не получилась..
</code>
  • Вопрос задан
  • 1106 просмотров
Решения вопроса 2
0xD34F
@0xD34F Куратор тега JavaScript
const makeCensored = (str, words, replacement = '***') =>
  str
    .split(' ')
    .map(n => words.includes(n) ? replacement : n)
    .join(' ');
Ответ написан
y0u
@y0u Куратор тега JavaScript
dev
function makeCensored(str, value) {
  let arr = str.split(' ');
  const newArr = [];
  for (let word of arr) {
   if (value.includes(word)) {
      newArr.push('$#%!');
    } else {
      newArr.push(word);
    }
  }
  return newArr.join(' ');
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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