Javascript 无法读取未定义的属性

Javascript 无法读取未定义的属性,javascript,Javascript,我正在循环我的对象数据,但得到了这个未定义的值 不知道为什么,但希望有人能解释 我的目标是这样的: //globally set var sdata = {"4":{"7":["1","7","3","3"]},"3":{"3":["2","8","1","1"]}}; function is_occupied(position) { for (var x in sdata) { for (var y in sdata) { // error's

我正在循环我的对象数据,但得到了这个未定义的值

不知道为什么,但希望有人能解释

我的目标是这样的:

//globally set
var sdata = {"4":{"7":["1","7","3","3"]},"3":{"3":["2","8","1","1"]}};
function is_occupied(position) {
    for (var x in sdata) {
        for (var y in sdata) {
            // error's here Cannot read property '2' of undefined
            var ex = sdata[x][y][2] > position.block_width ? (sdata[x][y][2] + (sdata[x][y][2] - position.block_width)) : sdata[x][y][2],
            var ey = sdata[x][y][3] > position.block_height ? (sdata[x][y][3] + (sdata[x][y][3] - position.block_height)) : sdata[x][y][3];
            if (position.x >= sdata[x][y][2] && position.x <= ex && position.y >= sdata[x][y][3] && position.y <= ey) {
                alert('hit');
            }
        }
    }
}
我像这样循环对象:

//globally set
var sdata = {"4":{"7":["1","7","3","3"]},"3":{"3":["2","8","1","1"]}};
function is_occupied(position) {
    for (var x in sdata) {
        for (var y in sdata) {
            // error's here Cannot read property '2' of undefined
            var ex = sdata[x][y][2] > position.block_width ? (sdata[x][y][2] + (sdata[x][y][2] - position.block_width)) : sdata[x][y][2],
            var ey = sdata[x][y][3] > position.block_height ? (sdata[x][y][3] + (sdata[x][y][3] - position.block_height)) : sdata[x][y][3];
            if (position.x >= sdata[x][y][2] && position.x <= ex && position.y >= sdata[x][y][3] && position.y <= ey) {
                alert('hit');
            }
        }
    }
}
功能被占用(位置){
用于(sdata中的变量x){
用于(sdata中的变量y){
//此处出现错误无法读取未定义的属性“2”
var ex=sdata[x][y][2]>position.block_width?(sdata[x][y][2]+(sdata[x][y][2]-position.block_width)):sdata[x][y][2],
变量ey=sdata[x][y][3]>position.block_height?(sdata[x][y][3]+(sdata[x][y][3]-position.block_height)):sdata[x][y][3];

如果(position.x>=sdata[x][y][2]&&position.x=sdata[x][y][3]&&position.y我相信您希望在
sdata[x]
上循环,而不是在内部循环中循环
sdata

function is_occupied(position) {
    for(var x in sdata){
     for(var y in sdata[x]){

我相信您希望在
sdata[x]
上循环,而不是在内部循环中循环
sdata

function is_occupied(position) {
    for(var x in sdata){
     for(var y in sdata[x]){

啊!好地方先生!!原来是这样!:)啊!好地方先生!!原来是这样!:)