#javascript #arrays
#javascript #массивы
Вопрос:
Я пытаюсь создать шахматную партию. Я создал 64 divs для шахматной доски с помощью функции chessSquares
. Когда я создавал их, я помещал элементы в вызываемый массив array
, который состоит из 64 элементов, которые я создал и добавил к шахматной доске.
Следующие две функции — это yCoord
and xCoord
. С помощью этих двух функций я создал элементы div с координатами для шахматной доски и добавил к chessSquares
. Эти элементы являются внешними элементами в левой и верхней части шахматной доски, которые отображают координаты.
С помощью следующей функции otherCoord
я пытаюсь выполнить оценку, где, если id numbers
элементы в array
не совпадают ID numbers
с элементами в массиве arrayXYCoord
, тогда к push
элементам в массиве arrayInnerCoord
.
После того, как я сделаю это, я буду использовать функцию для присвоения идентификаторов другим квадратам шахматной доски, за которыми следуют координаты, которые можно включать и выключать.
Я пробовал различные способы сделать это, например, запускать два цикла одновременно, и в итоге идентификатор несколько раз помещается в массив, и это просто казалось очень грязным. Я ищу простой способ сделать это с помощью простого сравнения.
Если возможно, я хотел бы использовать метод из javascript.info/array-methods . Спасибо
//Make a button to show or hide the x1 y1's and another button for all the x's and y's
//Center the divs x1 y1 on the sides and top
//
const body = document.querySelector('body');
const chessBoard = document.getElementById('chessBoard');
const toggleStatus = document.getElementById('toggleStatus');
const toggle = document.getElementById('toggle');
let array = []; //Array for chessboard squares (divs);
let arrayXYCoord = []; //Coord for outer X and Y Divs - These are ID numbers
let arrayInnerCoord = []; //Coords for those that are not in the center
//Creating Chessboard blocks (divs) and appending them to chessboard
function chessSquares() {
let divID = 1;
for (i = 0; i < 64; i ) {
let div = document.createElement('div');
div.className = 'chessDivs';
div.id = divID;
chessBoard.appendChild(div);
array.push(div);
divID ;
}
}
chessSquares()
// Adding y Coordinate to side of board; classname is "yOuterCoordinates"
function yCoord() {
let yOuterArray = [1, 9, 17, 25, 33, 41, 49, 57]
for (b = 0; b < yOuterArray.length; b ) {
const yCoord = document.getElementById(yOuterArray[b]);
let yCoordinates = document.createElement('div');
yCoordinates.textContent = 'y-' yOuterArray[b];
yCoordinates.className = 'yOuterCoordinates';
yCoord.appendChild(yCoordinates);
let yDivs = document.getElementById(yOuterArray[b]);
arrayXYCoord.push(yDivs);
}
}
yCoord();
// Adding x Coordinates to top of board; classname is "xOuterCoordinates"
function xCoord() {
let xOuterArray = [1, 2, 3, 4, 5, 6, 7, 8]
for (b = 0; b < xOuterArray.length; b ) {
const xCoord = document.getElementById(xOuterArray[b]);
let xCoordinates = document.createElement('div');
xCoordinates.textContent = 'x-' xOuterArray[b];
xCoordinates.className = 'xOuterCoordinates';
xCoord.appendChild(xCoordinates);
let xDivs = document.getElementById(xOuterArray[b]);
arrayXYCoord.push(xDivs);
}
}
xCoord();
//Adding coordinates to rest of board with a class name of "otherCoords"
function otherCoord() {
for (i = 0; i < array.length; i ) {
}
}
otherCoord()
console.log(bodyArray);
const whiteChessPieces = [{}];
const blackChessPieces = [{}];
function chessPieces() {
for (i = 0; i < 8; i ) {
//White Pawns
whiteChessPieces.push({ whitePawns: 'amp;#9817' });
}
for (i = 0; i < 2; i ) {
//White Knights
whiteChessPieces.push({ whiteKnight: 'amp;#9816' });
}
for (i = 0; i < 2; i ) {
//White Bishops
whiteChessPieces.push({ whiteBishop: 'amp;#9815' });
//
}
for (i = 0; i < 2; i ) {
//White Rooks
whiteChessPieces.push({ whiteRook: 'amp;#9814' })
}
whiteChessPieces.push({ whiteQueen: 'amp;#9813' }); //Queen
whiteChessPieces.push({ whiteKing: 'amp;#9812' }); //King
for (i = 0; i < 8; i ) {
//Black Pawns
blackChessPieces.push({ blackPawn: 'amp;#9823' })
}
for (i = 0; i < 2; i ) {
//Black Knight
blackChessPieces.push({ blackKnight: 'amp;#9822' });
}
for (i = 0; i < 2; i ) {
//Black Bishop
blackChessPieces.push({ BlackBishop: 'amp;#9821' });
}
for (i = 0; i < 2; i ) {
//Black Rooks
blackChessPieces.push({ blackRook: 'amp;#9820' });
}
blackChessPieces.push({ blackQueen: 'amp;#9819' });
blackChessPieces.push({ blackKing: 'amp;#9818' });
}
chessPieces();
body,
html {
box-sizing: border-box;
}
body {
background-color: white;
display: flex;
justify-content: center;
align-items: center;
padding: 0;
margin: 0;
position: relative;
}
#chessBoard {
/* width: 32rem;
height: 32rem; */
background-color: rgb(65, 35, 1);
display: flex;
flex-direction: row;
flex-wrap: wrap;
justify-content: center;
align-items: center;
width: 32rem;
margin-top: 4rem;
border: 5px ridge rgb(0, 0, 0)
}
.chessDivs {
width: 4rem;
height: 4rem;
margin: 0;
padding: 0;
background-color: rgb(105, 76, 22);
border: 2.5px groove rgb(126, 124, 124);
box-sizing: border-box;
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
display: inherit;
position: relative;
}
.chessDivsNone {
display: none;
}
#dualCoord {
display: flex;
flex-direction: column;
}
#toggle {
position: absolute;
top: 4rem;
right: 2rem;
height: auto;
width: auto;
background-color: black;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
text-align: center;
color: white;
font-weight: 900;
font-size: 1.25rem;
border: 5px groove blue;
}
.toggleText {
margin: 0;
margin-top: 1rem;
}
#toggleStatus {
margin: 1.5rem 1rem .75rem 1rem;
font-size: 1.5rem;
color: rgb(23, 212, 55);
}
.xOuterCoordinates {
position: absolute;
bottom: 150%;
}
.yOuterCoordinates {
width: 2rem;
position: absolute;
right: 150%;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Chess Game</title>
<style>
</style>
</head>
<body>
<div id="toggle">
<p class="toggleText">Toggle<br>Coordinates</p>
<p id="toggleStatus">Status - On</p>
</div>
<div id="chessBoard">
</div>
</body>
<script>
// Moved to JavasScript pane
</script>
</html>
Ответ №1:
JavaScript — это язык, на котором все становится проще и не так запутанно, как Java. JavaScript имеет встроенные функции для ваших нужд. Вам не нужно создавать вложенные циклы, как вы делаете в Java, при поиске в массивах.
JavaScript имеет встроенную функцию, вызываемую includes()
Предположим ,:
array1 = ['cat', 'bat', '2', 'rat', 'mat'];
array2 = ['hat', '2', 'elephant', 'cow', 'bat'];
Сейчас:
array2.includes(array1[0]); //Returns false
array2.includes(array1[2]); //Returns true
array1.includes(array2[4]); //Returns true
array2.includes("elephant"); //Returns true
Более подробную информацию об этой array.includes()
функции можно найти по адресу: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/includes или в https://www.w3schools.com/jsref/jsref_includes_array.asp
Надеюсь, это ответ на ваш вопрос.