Задать вопрос
BenderIsGreat34
@BenderIsGreat34
junior front-end

Разбор кода js (beginner)?

Сразу скажу, что данный фрагмент кода посоветовали на стэке, но там порою бывает токсичная аудитория. не понятен следующий фрагмент. Знаю, что pars[pars[i]] нужно для того, чтобы указать не на конкретный элемент массива, а в целом на весь массив, но не понимаю, как происходит проверка. объясните дословно, пожалуйста, что происходит и как проверяется условие.
т.е если указанное слово в массиве является истинной, то добавляем к этому слову +1, так получается? а дальше удаляем это слово, чтобы не зациклилась прога. иначе мы просто добавляем к этому слову единицу указывая, что оно не повторилось, так? но как происходит само сравнение, мы же не указываем с чем сравнивать.
и почему мы добавляем к слову количество, когда начинаем записывать количество повторений?

var pars = ('Ваш текст').toLowerCase().replace(/[.,\/#!?$%\^&\*;:{}=\-_`~()]/g, "").split(' ');

	for (var len = pars.length, i = len; i >= 0; i--) {
	    if (pars[pars[i]]) { //проверяем встречалось ли уже это слово
		pars[pars[i]] += 1; //если да, то увеличиваем счетчик на один
		pars.splice(i, 1); //удаляем это слово
	    } else {
		pars[pars[i]] = 1; //если нет, то ставим счетчик на единицу
	    }
  • Вопрос задан
  • 644 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
Robur
@Robur
Знаю больше чем это необходимо
Любому объекту в JS можно присвоить новые свойства и массив не исключение. в него можно напихать свойств помимо того что там лежит, но - не надо так делать. Лучше сделать отдельный объект.
.
pars[pars[i]] проверяет свойство с именем pars[i] в pars а не "весь массив"

например если pars[i] = 'foo' эта конструкция проверит что pars.foo существует (больше нуля и вообще truthy)
если она существует, то добавляем единичку. То есть если было pars.foo = 1 то станет pars.foo = 2
Если не было - то создаем и ставим туда 1

в итоге он насоздает в массиве свойств с именами слов которые в нем встречаются и значением равным количеству раз которое это слово встретилось.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы