петли во вложенных циклах
Доброго времени суток уважаемые форумчане,
Попробую объяснить смысл моего вопроса. Есть незамысловатый код:
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,
:-? |
рони,
Наверно не так сформулировал - так наверное будет правильнее как повторить итерацию цикла при определенном условии. |
atanov,
не понимаю |
atanov,
Тебе надо в результате, чтобы obj[i][j].z было случайным целым, от 0 до 10, но не 6? (i = 0...3, j = 0...2) |
Alexandroppolus,
Нужно в общем виде вот это: повторить текущую итерацию цикла при определенном условии. Именно повторить, т.е. continue не подходит. Смотрел в сторону меток с break, толком не понял, можно ли на текущий цикл отослать, а не на цикл уровнем выше. Если да, то это «почти» решение, останется смирится с перезапуском цикла. |
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,
Спасибо. Второй вариант визуально прикольнее выглядит :dance: |
| Часовой пояс GMT +3, время: 10:15. |