powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Как понять условие цикла?
6 сообщений из 6, страница 1 из 1
Как понять условие цикла?
    #39097807
Tjradenot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет, изучаю понемногу JavaScript. Есть пара вопросов.

Есть код с кодэкэдеми:

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
/*jshint multistr:true */

text = "Blah blah blah blah blah blah Eric \
blah blah blah Eric blah blah Eric blah blah \
blah blah blah blah blah Eric";

var myName = "Eric";
var hits = [];

// Look for "E" in the text
for(var i = 0; i < text.length; i++) {
	if (text[i] === "E") {
		// If we find it, add characters up to
		// the length of my name to the array
		for(var j = i; j < (myName.length + i); j++) {
			hits.push(text[j]);
		}
	}
}

if (hits.length === 0) {
	console.log("Your name wasn't found!");
} else {
	console.log(hits);
}



Во втором цикле есть условие: ( var j = i ; j < ( myName.length + i );
Не могу понять, почему j должен равняться i?
А также зачем к длине имени прибавлять значание итератора i?

Прошу объяснить, кто может . Спасибо
...
Рейтинг: 0 / 0
Как понять условие цикла?
    #39097834
Фотография бухалтер фантоцци
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TjradenotВо втором цикле есть условие: ( var j = i ; j < ( myName.length + i );
Не могу понять, почему j должен равняться i?
А также зачем к длине имени прибавлять значание итератора i?
немного изменённый вариант может подскажет? (не проверял ни один из вариантов)

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
text = "Blah blah blah blah blah blah Eric \
blah blah blah Eric blah blah Eric blah blah \
blah blah blah blah blah Eric";

var myName = "Eric";
var hits = [];
var i=0, j;

while (i >= 0) {
	i = text.indexOf('E', i);
	if (i != -1) {
		for(j = i; j <= myName.length; j++) {
			hits.push(text[j]);
		}
	}
}

if (hits.length === 0) {
	console.log("Your name wasn't found!");
} else {
	console.log(hits);
}
...
Рейтинг: 0 / 0
Как понять условие цикла?
    #39097835
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tjradenot Есть код с кодэкэдеми:это что за звери?

Tjradenot Не могу понять, почему j должен равняться i?потому что автор так захотел - начинаем внутренний цикл со значения итератора внешнего.

тупенький примерчик на самом деле. внешний цикл заново пройдет часть текста, пройденную внутренним, а если текст будет ЕЕЕЕЕЕЕЕЕЕ, то hits будет в несколько раз длиннее text. и ни одного эрика.

TjradenotА также зачем к длине имени прибавлять значание итератора i?Затем, что это к итератору прибавляется длина имени. От перемены мест слагаемых сумма не меняется, но может поменяться смысл.

Внешний цикл ищет букву E в тексте, внутренний отправляет в массив 4 символа (длина myName), начиная с E. и не важно, Eric там или Egor.

Собственно, всё это и так написано в комментариях по-английски.
...
Рейтинг: 0 / 0
Как понять условие цикла?
    #39097838
Фотография бухалтер фантоцци
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сорри, надо заменить:
Код: javascript
1.
for(j = i; j <= myName.length; j++)


на:
Код: javascript
1.
for(j = i; j <= myName.length + i; j++)


не проверял, вот и пропустил важный момент
...
Рейтинг: 0 / 0
Как понять условие цикла?
    #39097839
Фотография бухалтер фантоцци
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

ну я специально немного переписал пример, пусть и тупенький, но чтобы ТС попрактиковался "на кошках"
...
Рейтинг: 0 / 0
Как понять условие цикла?
    #39147790
Tjradenot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Antonariyпотому что автор так захотел - начинаем внутренний цикл со значения итератора внешнего.

тупенький примерчик на самом деле. внешний цикл заново пройдет часть текста, пройденную внутренним, а если текст будет ЕЕЕЕЕЕЕЕЕЕ, то hits будет в несколько раз длиннее text. и ни одного эрика.

Спасибо, большое. Да действительно если добавить "EEEE", эрика не найдёт.
j = i - это чтобы цикл начался с нужного места (с момента обнаружения "E"). так?


AntonariyЗатем, что это к итератору прибавляется длина имени. От перемены мест слагаемых сумма не меняется, но может поменяться смысл.

Внешний цикл ищет букву E в тексте, внутренний отправляет в массив 4 символа (длина myName), начиная с E. и не важно, Eric там или Egor.

Загадочная фраза) Так и не понял, с какой целью добавлять i. Хотя если не добавлять - результата не будет.
Буду разбираться )

Спасибо друзья . Сорри за долгий ответ)


AntonariyTjradenotЕсть код с кодэкэдеми:это что за звери?

codecademy - на этом сайте познаю JS.
Спасибо
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Как понять условие цикла?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]