2016-01-27 3 views
1

Я пытаюсь создать функцию, которая строит контрольную панель, однако я не могу заставить свою вторую условную инструкцию выполнить и создать новую строку.Условный оператор Javascript не выполняется

function grid(size) { 
 
    var board = ""; 
 
    for (i = 0; i <= (size * size); i++) { 
 
    if (i % 2 === 0) { 
 
     board += ' '; 
 
    } else if (i % size === 0) { 
 
     board += "\n"; 
 
    } else { 
 
     board += '#'; 
 
    } 
 
    } 
 
    console.log(board); 
 
} 
 
grid(8);

Он появится еще, если оператор не выполняется, потому что я попытался изменить «\ п» и условие для других вещей, но ничего не печатается. Этот вопрос из красноречивых Javascript и данное решение заключается в следующем:

var size = 8; 
 

 
var board = ""; 
 

 
for (var y = 0; y < size; y++) { 
 
    for (var x = 0; x < size; x++) { 
 
    if ((x + y) % 2 == 0) 
 
     board += " "; 
 
    else 
 
     board += "#"; 
 
    } 
 
    board += "\n"; 
 
} 
 

 
console.log(board);

Я не знаю, почему второй один работает, но не мое.

ответ

2

Давайте анализировать код:

if(i % size === 0) 

Это означает, что, когда я равен 0 или кратен размеру. В вашем случае, размер 8.

Таким образом, для вашего, если для запуска, я должен быть 0,8,16,32 ....

Во всех этих случаях, он никогда не будет стрелять, потому что, когда я это 0,8,16,32 ... i% 2 равно 0, поэтому он будет запускать первый, если вместо этого и никогда не будет второй. Вы должны инвертировать порядок ifs или запустить оба

+0

№ Необменить. Вы получаете 7 x 8 досок. Остальное, если должно быть отдельным, если во главе цикла –

+0

@JaromandaX да, правда, бегать, вероятно, лучше, не пробовал, хотя – juvian

2

i % 2 всегда будет выполняться вместо i % (8 * 8). Вы должны поменять порядок или удалить else со второго if.

Смежные вопросы