我有一个对象,我将其转换为一个坐标数组,该数组将用于存储哪些坐标被“占用”。
我以为我可以正常工作,但是通过 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 x 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
知道为什么我会丢失其他数据吗?