javascript - 遍历对象字面量和数组

标签 javascript arrays object for-loop for-in-loop

我认为我的对象字面量和数组循环有问题。 我正在尝试为我之前使用过数组的“ map ”使用对象文字。我想使用对象文字的原因是因为我想要一个变量来显示它所在位置的名称。截至目前,我总是遇到 loc[2][1] = player; 的问题。

var room0 = [
        [blank, blank, blank, blank],
        [blank, blank, blank, blank],
        [blank, player, blank, doorRight],
        [blank, blank, blank, blank]
];
var room1 = [
        [blank, blank, blank, blank],
        [blank, blank, blank, blank],
        [blank, blank, blank, blank],
        [blank, blank, blank, blank]
];

var loc = room0;

var map = {
    "living room": room0,
    "Bedroom": room1,
    "Outside": room2
};

function moveRight() {
    for (var y = 0; y < loc.length; y++) {
        var posX = loc[y].indexOf(player);
        if (posX <= -1) continue;

        // if going to the next room to the right
        if (loc[y][posX+1] == doorRight) {

            for (var name in map) {
                if (loc == map[name]) {
                    var rightLoc = map[name+1];
                }
            }


            loc[y][posX] = blank;
            loc = rightLoc;
            loc[2][1] = player;
            break;
        }

        if (loc[y][posX+1]  != blank) break;
        if (posX < loc[y].length - 1) {
            loc[y][posX] = blank;
            loc[y][posX + 1] = player; 
        }
        break;
    }
}

最佳答案

你只需要在 map 中保存不同的东西,因为 map[name+1]不会神奇地指向由 name 标识的下一个房间.

var map = {
    "living room": 0,
    "Bedroom": 1,
    "Outside": 2
};

var rooms = [room0, room1, room2];

现在,map['living room']将在 rooms 中保留索引,因此您仍然可以使用数字加法“移动”到下一个房间。您的代码将变为:

var rightLoc;

for (var name in map) {
    if (loc == map[name]) {
        rightLoc = map[name] + 1;
    }
}

loc = rooms[rightLoc];

这段代码仍然缺乏一些检查来确保你总是有一个房间可以进入,但我相信你可以自己弄清楚:)

关于javascript - 遍历对象字面量和数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16331195/

相关文章:

javascript - JavaScript中的三维数组

javascript - Office 2013 Javascript API - 将变量传递给 ".BindingDataChanged"的回调

ios - 快速调用中的额外参数

java - 如何输出这组测试成绩?

javascript - 如何从javascript获取clone()函数的结果?

javascript - 如何在没有特定子元素的情况下获取div中的内容

javascript - 我如何调用数组中的一系列数字?

java - 对用户输入的价格进行冒泡排序?

c++ - 从工作线程访问对象

java - 通过java套接字发送对象