我在初始化 "categorizedProductsPath "陣列時遇到了問題,兩種方法都不奏效,失敗的原因在哪里?
// let categorizedProductsPath: number[][] = [];
let categorizedProductsPath = new Array<number[]>(categorizedProducts.length)。
for (let k = 0; k < categorizedProducts.length; k ) {
const categorizedProduct = categorizedProducts[k];
const categoryOfCategorizedProduct = await this. getCategoryToProduct( categorizedProduct.google_product_category) 。
let currentParentId = categoryOfCategorizedProduct.parentId;
while (currentParentId !== 0) {
const parentCategory = await this.getCategoryToProduct(currentParentId)。
currentParentId = parentCategory.id。
categorizedProductsPath[categorizedProduct.id].push(parentCategory.id); //***>
}
}
這個錯誤(TypeError: 無法讀取未定義的屬性(讀取'push'))來到了這里 ***:
categorizedProductsPath[categorizedProduct.id].push(parentCategory.id)。
關注
uj5u.com熱心網友回復:
你希望categorizedProductsPath是一個number[][]的嵌套陣列。但是目前它是一個空陣列,你沒有正確地初始化它。
const arr = new Array(3)將只是給你一個包含三個未定義的陣列。如果你想要一個由其他三個空陣列組成的陣列,比如[[], [], []],你要這樣做:
const arr = new Array(3)。 fill(0).map(() => [ ] )
uj5u.com熱心網友回復:
你創建了外部陣列,但沒有創建內部陣列。 你必須先進行categorizedProductsPath[categorizedProduct.id] = [],然后才可以push到它;
注意,如果categorizedProduct.id不是從0開始的連續整數,這可能會創建一個稀疏的陣列。這還是可以的。但是如果categorizedProduct.id的順序沒有意義,你可以考慮直接使用一個物件而不是一個陣列。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/307497.html
標籤:
上一篇:自動完成首次呈現需要時間
下一篇:型別錯誤。不能讀取未定義的屬性
