Задача с вложенными циклами

Нужно нарисовать строку с помощью вложенного цикла:

 10x01x
 10x01x
 10x01x

У меня получилось так:

 10x010
 10x010
 10x010

Сделал все через оператор % узнав остаток, а для 'x' написал отдельную инструкцию через else if. Но проблема в том, что if записывает 0 первее, чем else if для второго 'x'.

let out6 = document.querySelector('#out6');

for (let i = 0; i < 3; i++) {
    for (let j = 1; j <= 6; j++) {
        if (j % 2 == 0) {
            out6.innerHTML += 0;
        }
        else if (j == 3 || j == 6) {
            out6.innerHTML += 'x';
        }
        else {
            out6.innerHTML += 1;
        }
    }
    out6.innerHTML += '<br>';
}

Как это исправить?


Ответы (2 шт):

Автор решения: n1tr0xs

Просто поменяйте инструкции местами.

let out6 = document.querySelector('#out6');

for (let i = 0; i < 3; i++) {
    for (let j = 1; j <= 6; j++) {
        if (j == 3 || j == 6) {
            out6.innerHTML += 'x';
        }
        else if (j % 2 == 0) {
            out6.innerHTML += 0;
        }
        else {
            out6.innerHTML += 1;
        }
    }
    out6.innerHTML += '<br>';
}

Еще можно заменить j==3 || j==6 на j % 3 == 0.

→ Ссылка
Автор решения: Tefse

Если там нет ограничения на количество вложенных циклов, то можно так

let str = '';

for (let a = 0; a < 3; a++) { //цикл-обертка для вывода строки три раза
  for (let i = 1; i > 0; i--) {
    str += `${i}`;
    for (let j = 0; j <= 1; j++) {
      str += `${j}x`;
      if (j === 1) continue;

      for (let k = 0; k <= 0; k++) {
        str += `${k}`;
      }
    }
  }
  str += `<br>`;
}

document.write(str);
console.log(str);

→ Ссылка