Редактировать: Я решил проблему, изменив массив 2d на простой массив и используя арифметику и логику для получения координат, см. Ниже.Логическая ошибка не срабатывает в javascript
У меня есть алгоритм, который добавляет 50 к двумерному массиву, когда координаты имеют нечетно-нечетное спаривание (например, [1] [1], [3] [5] и т. Д.). Единственная проблема в том, что она не работает. В соответствии с консолью браузера он никогда не срабатывает. Это то, что это:
if(((col & 1) & row) == 1) { y+= 50; }
Более подробный пример моего кода здесь:
//goes through the board's array and calls
//drawChecker to print each found piece
function drawPieces() {
var row = 0;
var col= 0;
for(row = 0; row < 1; row++) {
var y = row * 100;
console.log("row " + row + " set x to " + x);
var flag = (row & 1);
for(col = 0; col < 8; col++) {
var x = col*50;
console.log("column " + col + " set y to " + y);
console.log("y was " + y);
if(((col & 1) & row) == 1) { y+= 50; }
console.log("Now y is " + y);
console.log("Done setting " + row + "," + col);
console.log("Final coordinates are " + x + "," + y);
drawChecker(x,y,square[row][col]);
}
}
}
массив был создан с помощью следующего кода:
var square = new Array(4);
for(i = 0; i < 4; i++) { square[i] = new Array(8); }
где должны результат расчета идти? к квадрату? –
У вас есть только одна строка 'for (row = 0; row <1; row ++)' –
Лучше использовать 'square.length' как предел во внешнем цикле' for' и 'square [row] .length 'во внутреннем, а не фиксированные значения. – hindmost