Я учусь Javascript, так что прошу прощения за любые ошибки в формулировке вопроса.
Я пишу шахматную программу, чтобы практиковаться и учиться. В настоящее время я пытаюсь написать функцию, чтобы найти цвет части с положением в качестве параметра. Соответствующие фрагменты кода следующие. Первые два работают так, как они были разработаны, но последний - нет.
let allPieces = board.getElementsByClassName('piece');
Это устанавливает allPieces
как объект со значениями ключей html элементы, представляющие каждую часть, как черную, так и белую. .
const getPiecePosition = function(element) {
let position = window.getComputedStyle(element).getPropertyValue('grid-row-start');
let letterIndex = alphabet.findIndex(function(letter) {
return letter === position[0];
});
letterIndex += 1;
return [letterIndex, Number(position[1])];
}
Это принимает параметр в форме объекта allPieces
с указанным ключом c и возвращает позицию в виде массива с номером столбца первым и номером строки вторым. напр. [2,3]
.
const getPieceByPosition = function(position) {
let pce = Object.keys(allPieces).forEach(function(piece) {
if (getPiecePosition(allPieces[piece]) == position) {
return allPieces[piece].borderColor;
}
})
return pce;
}
Это функция, с которой у меня возникли проблемы. Идея заключается в том, что он будет принимать каждый ключ в объекте allPieces
и l oop через них, используя forEach()
в функции getPiecePosition()
, чтобы сравнить его с позицией, введенной в качестве параметра. Поскольку на любой плитке одновременно может находиться только один элемент, он никогда не должен возвращать несколько значений.
Я, честно говоря, не знаю, с чего начать отладку этого кода, но я пытался около часа. Он всегда просто возвращает undefined
вместо любого правдивого значения.