0

オブジェクトデータをループしていますが、この未定義の値を取得しています。

理由はわかりませんが、誰かが説明できることを望んでいました。

私のオブジェクトは次のようなものです:

//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');
            }
        }
    }
}

なぜそれが未定義と言うのだろうか?=/うまくいきません。そのオブジェクトの配列データで位置[2]を取得していると仮定します。

4

1 に答える 1

6

私はあなたがあなたの内側のループsdata[x]ではなく、ループしていることを望んでいると信じています:sdata

function is_occupied(position) {
    for(var x in sdata){
     for(var y in sdata[x]){
于 2012-04-06T02:22:48.773 に答える