В javascript у меня есть массив со словами, которые я хотел бы подвергнуть цензуре после помещения некоторого текста в textarea, и когда слово в нем совпадает с одним в массиве, оно заменяется на «****».Проблема в том, что, например, запрещенное слово - «word1», а когда я запускаю событие, нажимая на кнопку «censor», textarea.value, которая (например) - «word1!»заменяется на «*****», но я хочу, чтобы оно было «*****!».
Нет циклов, потому что я просто попытался применить алгоритм для одного забаненного слова,Даже не мог этого сделать.Переменная 'start' предназначена для дальнейшего поиска других запрещенных слов в пределах textarea.value.Все должно быть сделано с помощью базовых методов строки / массива, без использования регулярных выражений.
let getId = x => document.getElementById(x);
let banned = ['word1','word2','word3'];
let start = 0;
getId('censor').addEventListener('click', function(){
let stars = '';
for(let i=0;i < banned[0].length; i++) {
stars+= '*';
}
let str = getId('text').value;
str = str.split(' ');
let found = str.indexOf(banned[0],start);
str.splice(found,1, stars);
str = str.join(' ');
getId('text').value = str;
})
<div class="container">
<form action="">
<input type="text" id="banInput">
<input type="button" value="Add word" id="add">
</form>
<textarea name="" id="text"></textarea>
<input type="button" value="censor" id="censor">
</div>