我有一個對象,它將im轉換爲一組將被用來存儲哪些座標被「佔用」的座標。在我的數組中缺少結果
我以爲我有它的工作,但通過console.log進一步檢查數組缺少一些公平的結果。
所以這基本上是我對象:
var sdata = {"4":{"7":["1","7","3","3"]}};
在口頭上是這樣的:
var sdata = {"X":{"Y":["ID","ID","Width","Height"]}
忽略ID爲這個,因爲他們是無關的......但我嘗試使用此數據使我有X和Y +額外的X和Y座標相關的瓷磚尺寸的寬度和高度。
想象一下,如果將4:7的對象設置爲3乘3維,那麼會導致這9個網格引用存在。
[4:7], [5:7], [6,7]
[4:8], [5:8], [6,8]
[4:9], [5:9], [6:9]
所以我的函數來創建座標爲:
function populate_collisions() {
for (var X in sdata) {
X = parseInt(X);
for (var Y in sdata[X]) {
Y = parseInt(Y);
width = parseInt(sdata[X][Y][2]);
height = parseInt(sdata[X][Y][3]);
for (i=X; i!= X+width; i++) {
if(typeof gcollision[i] == 'undefined') {
gcollision[i] = new Array();
}
gcollision[i][Y] = 1
for (j=Y; j!=Y+height; j++) {
if(typeof gcollision[X] == 'undefined'){
gcollision[X] = new Array();
}
gcollision[X][j] = 1
}
}
}
}
}
但由於即時得到這個結果對我的陣列我的邏輯一定是錯的:
[4] [7] = 1
[4] [8] = 1
[4] [9] = 1
[5] [7] = 1
[6] [7] = 1
任何想法,爲什麼我在想念額外的數據?
你期望得到什麼? – 2012-04-07 02:22:41
我不明白你的目標爲什麼這麼複雜。 Surly只需標記屬性就更簡單了:'sdata = {x:4,y:7,id0:1,id1:7,w:3,h:3};'那麼你可以拋棄'parseInt'和for..in東西。直接屬性訪問應該更快,並且不會被某人向Object.prototype添加可枚舉屬性(不太可能如此),並且您的對象結構更加靈活。 – RobG 2012-04-07 02:27:20
@RobG它在PHP中生成像這樣然後json編碼被傳遞給JS之前:http://www.paste.to/Mzc4MTU1 – Sir 2012-04-07 02:32:32