Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.04.2019, 12:37
Профессор
Отправить личное сообщение для atanov Посмотреть профиль Найти все сообщения от atanov
 
Регистрация: 27.06.2016
Сообщений: 157

петли во вложенных циклах
Доброго времени суток уважаемые форумчане,
Попробую объяснить смысл моего вопроса.
Есть незамысловатый код:
let obj = {};
for(let x = 0; x < 4; x++)
{	
	obj[x] = {};
	loop:
		for(let z = 0; z < 3; z++)
		{
			let value = Math.floor(10*Math.random(0, 10));
			if (value == 6)
			{
				break loop;
			}
			else
			{
				obj[x][z] = {z: value};
			}		
		}
}
console.log(obj);

идея такая - сделать так, чтобы объект obj заполнился подобъектами, в которых три ключа и три значения - случайное целое число от 0 до 10. Если значение = 6, то нужно, чтобы пробежался внутренний цикл не с начала, а с момента, когда в стр. 10 true и до конца. Конечно, я понимаю, что можно в стр. 15 установить формулу из стр. 8, НО в частном случае мне потребуется несколько значений. Надеюсь правильно сформулировал задачу.

Последний раз редактировалось atanov, 07.04.2019 в 21:58.
Ответить с цитированием
  #2 (permalink)  
Старый 07.04.2019, 13:21
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 26,503

atanov,
Ответить с цитированием
  #3 (permalink)  
Старый 07.04.2019, 21:59
Профессор
Отправить личное сообщение для atanov Посмотреть профиль Найти все сообщения от atanov
 
Регистрация: 27.06.2016
Сообщений: 157

рони,
Наверно не так сформулировал - так наверное будет правильнее как повторить итерацию цикла при определенном условии.
Ответить с цитированием
  #4 (permalink)  
Старый 07.04.2019, 22:30
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 26,503

atanov,
не понимаю
Ответить с цитированием
  #5 (permalink)  
Старый 07.04.2019, 22:42
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 690

atanov,
Тебе надо в результате, чтобы obj[i][j].z было случайным целым, от 0 до 10, но не 6?
(i = 0...3, j = 0...2)
Ответить с цитированием
  #6 (permalink)  
Старый 07.04.2019, 23:07
Профессор
Отправить личное сообщение для atanov Посмотреть профиль Найти все сообщения от atanov
 
Регистрация: 27.06.2016
Сообщений: 157

Alexandroppolus,
Нужно в общем виде вот это: повторить текущую итерацию цикла при определенном условии. Именно повторить, т.е. continue не подходит. Смотрел в сторону меток с break, толком не понял, можно ли на текущий цикл отослать, а не на цикл уровнем выше. Если да, то это «почти» решение, останется смирится с перезапуском цикла.
Ответить с цитированием
  #7 (permalink)  
Старый 08.04.2019, 06:11
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 690

let obj = {};
for(let x = 0; x < 4; x++)
{	
	obj[x] = {};
	for(let z = 0; z < 3; z++) {
		let completed = false;
		while (!completed) {
			let value = Math.floor(10*Math.random(0, 10));
			if (value !== 6) {
				obj[x][z] = {z: value};
				completed = true;
			}		
		}
	}
}
console.log(obj);


или, например, так:
let obj = {};
for(let x = 0; x < 4; x++)
{	
	obj[x] = {};
	for(let z = 0; z < 3; z++) {
		let value = Math.floor(10*Math.random(0, 10));
		if (value === 6) {
			z--;
		} else {
			obj[x][z] = {z: value};
		}
	}
}
console.log(obj);

этот вариант не получится использовать для циклов, упрятанных внутрь forEach и т.п., но с обычным циклом в самый раз.

Последний раз редактировалось Alexandroppolus, 08.04.2019 в 12:05.
Ответить с цитированием
  #8 (permalink)  
Старый 08.04.2019, 19:18
Профессор
Отправить личное сообщение для atanov Посмотреть профиль Найти все сообщения от atanov
 
Регистрация: 27.06.2016
Сообщений: 157

Alexandroppolus,
Спасибо. Второй вариант визуально прикольнее выглядит
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вложенные tabs c heightStyle: "fill" = проблема с высотой вложенных табов? flykeeper jQuery 4 02.03.2015 08:54
onclick во вложенных div Redya69 Общие вопросы Javascript 2 28.06.2014 20:53
Выборка элементов вложенных списков sniffysko jQuery 4 15.03.2010 23:41
Получение текстового содержимого из всех вложенных DOM EmDmAl Events/DOM/Window 8 02.12.2009 22:38
Как сделать чтобы text() брал только текст родителя без текста вложенных контейнеров? Andrey32 jQuery 3 23.05.2009 00:33