Поместить объект в массив, который поступает из 2D-массива

#javascript #arrays #typescript #loops #multidimensional-array

#javascript #массивы #typescript #циклы #многомерный массив

Вопрос:

У меня возникли проблемы при попытке переместить объекты в массив, который поступает из 2D-массива.

           let blacksPosition: Array<any>;

          for (let i = 0; i < 8; i  ) {
            for (let j = 0; j < 8; j  ) {
              if (boardArray[i][j].team === "black") {
                blacksPosition.push(boardArray[i][j]);
              }
            }
          }
  

TypeScript выдает мне следующую ошибку:

Переменная ‘blacksPosition’ используется перед назначением.

Но я не использовал blacksPosition раньше. Я впервые объявляю его в этой строке.

boardArray создается ли 2D-массив с помощью следующей функции:

 function create2DArray(rows: number, cols: number): Array<Array<any>> {
  const arr = new Array(rows);
  for (let i = 0; i < arr.length; i  ) {
    arr[i] = new Array(cols);
  }
  return arr;
}
  

Затем я заполняю этот 2D-массив объектами Tile:

   for (let i = 0; i < rows; i  ) {
    for (let j = 0; j < cols; j  ) {
      boardArray[i][j] = new Tile(i, j, col, "none");
    }
  }
  

Вот класс Tile:

 class Tile {
  x: number;
  y: number;
  tile: Element;
  team: string;
  piece: string;
  constructor(i: number, j: number, tile: Element, team: string) {
    this.x = i;
    this.y = j;
    this.tile = tile;
    this.piece = "none";
    this.team = team;
  }
}
  

Есть ли способ добавить те объекты Tile, которые поступают из 2D-массива, в массив blacksPosition?

Комментарии:

1. Точно так же, как ошибка сообщает вам, вы дали ему тип, но не пустое значение массива

Ответ №1:

Вы определили его определение в typescript, но не присвоили ему значение или тип.

 let blacksPosition: Array<any>;
  

должно быть

 let blacksPosition: Array<any> = [];
  

Ответ №2:

Когда вы объявляете переменную, blacksPosition просто назначьте ее пустому массиву let blacksPosition: Array<any> = [] , и вы можете захотеть изменить тип на Array<Tile> , чтобы сохранить все типы безопасными.