Я недавно начал использовать язык программирования JavaScript. Нет, это не мой первый язык, но это один из моих первых применений. Я пытаюсь создать шахматную программу, используя возможности холста HTML5. Я использую цикл for для создания массива всех позиций для шахматных фигур. Я столкнулся с одной проблемой; он сохраняет все координаты как неопределенные. Bellow - это код для функций, которые хранят эти значения.JavaScript - все, что хранится в for store, не определено
var board = [];
function createBoard() {
var integer = 0;
for (var i = 0; i < 8; i++) {
for (var j = 0; j < 8; j++) {
board[integer] = new Position(i, j);
integer++;
}
}
}
function replacePosition(position1, position2) {
var i = board.indexOf(position1);
board[i] = position2;
}
function getPosition(x, y) {
for (var position in board) {
console.log("(" + position.x + "," + position.y + ")");
if (position.x == x && position.y == y) {
return position;
}
}
return null;
Вот класс установки, если вам это нужно.
class Position {
constructor(x, y) {
this.x = x;
this.y = y;
this.piece = null;
}
}
Я бегу createBoard(), а затем я пытаюсь использовать GetPosition(). Я говорю, что мой код не работает с нулевым значением. Если я посмотрю на консоль, он продолжает вести журнал »(undefined, undefined)». Я сделал небольшое исследование, но единственное, что я смог найти, было асинхронным. Я попытался изучить это, но я не мог понять, как это исправить. Кто-нибудь знает, как это исправить?
Проверьте последний код! Я думаю, вы имели в виду 'p.x == x && p.y == y' not' position.x == ... '! –
@ibrahimmahrir действительно, спасибо! Обновлен ответ. – Pointy
Одна вещь просто заменит весь массив 'find' на:' return p.x == x && p.y == y'. Поскольку 'find' calback должен возвращать логическое значение, а не объект! –