0
我遇到了一個問題,我迭代計算並將值存儲到對象中的不同數組中,但只有最終迭代值最終保存在對象的不同部分。JavaScript內存賦值
在這裏的圖片中,我有控制檯輸出值minY和maxY。
我再檢查儲存在我的陣列之前,我去使用它的價值。
有沒有解決這個辦法嗎?第二張照片中的這些值是最終被使用的值,它阻止我前進。
編輯:我使用分配循環:
for (var i = 0; i < partitions; i++) {
var cellObject = new Object();
cellObject.minX = sceneBounds.min[0] + boxLength * i;
cellObject.maxX = sceneBounds.min[0] + boxLength * i + boxLength;
for (var j = 0; j < partitions; j++) {
cellObject.minY = sceneBounds.min[1] + boxWidth * j;
cellObject.maxY = sceneBounds.min[1] + boxWidth * j + boxWidth;
for (var k = 0; k < partitions; k++) {
// int index = height*width*k + width*j;
var index = partitions * partitions * k + partitions * j;
cellObject.minZ = sceneBounds.min[2] + boxHeight * k;
cellObject.maxZ = sceneBounds.min[2] + boxHeight * k + boxHeight;
cellObject.objectList = [];
cellArray[index + i] = cellObject;
}
}
}
我已經添加了我使用的循環。這看起來像你所引用的東西嗎? –
是的。你在第二行每次迭代創建一個對象,然後在最後一行使用同一個對象來處理每個'j'和'k'迭代中的'cellArray'賦值。最後一行不會複製'cellObject',它會說'cellArray'是*那個對象* - 對於所有不同的'j'和'k'都是同一個。你需要在'k'循環中創建一個新的對象以具有不同的非共享對象。使用局部變量保持'minX','maxX','minY'和'maxY'的值,並且只將它們賦值給'k'循環內的'cellObject'。 – Amadan