2016-03-14 4 views
-1

Я пытался решить красноречивое упражнение по шахматной доске javascript со следующим кодом. Строки печатаются в правильном порядке, но по какой-то причине, которую я не могу найти, цикл бесконечен. Любая помощь, направленная на то, что проблема, была бы очень признательна, спасибо.Javascript шахматная доска

мой код выглядит следующим образом:

var line= ['# # # #', ' # # # #'] 

for (var i = 0; i < 7; i ++) { 
    if (i = (i-1)%2 == 0) 
     console.log(line[0]); 
     else console.log(line[1]); 
}; 
+0

, потому что 'я = (I-1)% 2 == 0 'переопределяет значение' i' –

ответ

1

i будет всегда меньше, чем предел вашего цикла, из-за вашего назначения внутри состояния if

for (var i = 0; i < 7; i ++) { 
    // i & 1 is a mask that matches the rightmost bit, which, if set 
    // indicates that a number is odd 
    console.log(line[i & 1]); 
} 
0

Спасибо за ответ, я не понял проблему с условием, установленным в i в выражении if (ошибки новичка). Я изменил код на следующую один, и это работает прекрасно, и это, кажется, путь короче кода, чем те, предлагаемые в других решениях:

var line= ['# # # #', ' # # # #'] 

    for (var i = 0; i < 7; i ++) { 

    if (i%2 == 0) 
     console.log(line[0]); 

    else console.log(line[1]); 
    }; 

Спасибо за ваше время!

0

Вы можете программный вычислить символ вместо массива значений.

var html = ""; 
 
for(var i = 0; i<7; i++){ 
 
    for(var j=0; j<7; j++){ 
 
    html += (i+j) % 2 == 0?"# ":"&nbsp;&nbsp;"; 
 
    } 
 
    html+="<br/>" 
 
} 
 
document.write(html)