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],來初始化每行的數組。然后在內部循環中,我們可以通過索引來設置每個元素的值,并防止錯誤發生。

浙公網安備 33010602011771號