javascript - 将对象推送到来自 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
是使用以下函数创建的二维数组:
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;
}
然后我用 Tile 对象填充这个二维数组:
for (let i = 0; i < rows; i++) {
for (let j = 0; j < cols; j++) {
boardArray[i][j] = new Tile(i, j, col, "none");
}
}
这是瓷砖类:
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;
}
}
有没有办法将那些来自 2D 数组的 Tile 对象添加到 blacksPosition 数组?
解决方案
您定义了它的打字稿定义,但没有给它一个值或类型。
let blacksPosition: Array<any>;
应该
let blacksPosition: Array<any> = [];
推荐阅读
- firebase - 网站和应用程序之间的跨域跟踪
- javascript - Discord.js 票务系统 | 垃圾邮件问题
- android - 如何从 android 中的 keyguard 管理器中检索密码/pin 码
- c - 初始化多维数组时,编译器如何解释不完整的初始化列表?
- vue.js - VueJS 在文件夹中放置多个 .env
- mysql - 即使用户已经存在,向现有用户授予权限也会给出“您不允许创建具有授予权限的用户”
- android - 当我将其设置为横向时,对未设置为全屏的本机视频播放器做出反应
- python - 在不同的列名上使用 pd.merge() 时,生成的数据框具有重复的列。如何避免这种情况?
- javascript - 来自dotenv的process.env.PORT导致EACESS:节点中的权限被拒绝错误
- spring - Spring Data MongoDB(v4.4.1)文本搜索不起作用