TypeScript 二维数组生成 要注意初始化 TypeError: Cannot set properties of undefined (setting '1')
private _dataMap:Vec3[][] = []; private _userDataMap:number[][] = []; init() { for(let i = 1; i <= 4; i++){ for(let j = 1; j <= 4; j++){this._dataMap[i][j] = new Vec3(i, j, 0); this._userDataMap[i][j] = 0; } } } 其中 this._dataMap[i][j] = new Vec3(i, j, 0); 语句报错 TypeError: Cannot set properties of undefined (setting '1')
这个问题是因为 _dataMap
和 _userDataMap
的初始值是一个空数组,数组中没有任何元素。所以当你尝试通过索引来设置值时,会出现 "Cannot set properties of undefined" 的错误。
要解决这个问题,你需要在循环开始之前将数组初始化为具有正确维度的二维数组。可以使用以下代码来初始化两个数组:
for(let i = 0; i <= 4; i++){
this._dataMap[i] = [];
this._userDataMap[i] = [];
for(let j = 0; j <= 4; j++){
this._dataMap[i][j] = new Vec3(i, j, 0);
this._userDataMap[i][j] = 0;
}
}
在上述代码中,我们首先通过将空数组 []
赋值给 this._dataMap[i]
和 this._userDataMap[i]
,来初始化每行的数组。然后在内部循环中,我们可以通过索引来设置每个元素的值,并防止错误发生。