Как сравнить, находится ли элемент в двух разных массивах, и перейти к новому, если true

#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

Надеюсь, это ответ на ваш вопрос.