@Rufix

Насколько правильно такое написание кода?

Решил сделать задачку на JavaScript, которая будет заменять написанные в инпуте нецензурные слова на звездочки и выводить это предложение в параграф.
Задача вроде работает, но я не уверен, что она написана хорошо, т.к меня смущает написание "цикла внутри цикла". Хотелось бы узнать, насколько это нормальная практика, ну и услышать от вас какие у меня косяки в написании кода, чтобы сразу отучать себя от говнокода.

<input type="text" id="text">
	<p id="textOut"></p>


let abuse = ['блин', 'черт'];
let stars = '***'

let textInput = document.getElementById ('text');
let textOut = document.getElementById('textOut');
textInput.addEventListener ('blur', function censor () {
	let text = textInput.value;
	let words = text.split (' ');
	for (let i = 0; i < words.length; i++) {
		for (let k = 0; k < abuse.length; k++) {
			if (words [i] == abuse [k]) {
				words[i] = stars;
			}
		}
	}
	let newWords = words.join (' ');
	textOut.innerHTML = newWords;
	textInput.value = '';
})
  • Вопрос задан
  • 145 просмотров
Решения вопроса 2
@ShamanHead
Слишком императивно.У js есть функции для работы с массивами, и для поиска элемента в массиве тоже.IndexOf
Ответ написан
@MaximBredikhin
I am still learning.
Как вариант:
let abuse = ['блин', 'черт'];

let inp = document.querySelector('#text');
let out = document.querySelector('#textOut');

inp.addEventListener ('blur', () => {
  let words = inp.value.split(' ');
  
  words.forEach(element => {
  	if(!(abuse.indexOf(element) == -1)) {
  		element = '***';
  	}
  });
 
  out.innerHTML = words.join(' ');
  inp.value = '';
})
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
@McBernar
Точки, запятые?
Два цикла, конечно, не нужно. Есть поиск в массиве, есть has в мапах.
Ответ написан
@pako1265
Нуууу, я не мегапрофи, но я не читая описания, сразу понял что делает код, так что мне кажется код написан хорошо, понятно что его можно оптимизировать и тд и тп, но надо ли? Главное то читаемость)
Ответ написан
Ваш ответ на вопрос

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

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