Object.keys不工作?

时间:2014-11-21 23:25:49

标签: javascript screeps

在内存中使用以下内容:(可以将其直接复制/粘贴到“内存”选项卡并提交)

    {
    "creeps": {},
    "spawns": {},
    "DEBUG": true,
    "q": {
        "[spawn Spawn1]": [
            [
                [
                    "work",
                    "carry",
                    "carry",
                    "move",
                    "move"
                ],
                "harvester_1",
                {
                    "type": "harvester"
                }
            ],
            [
                [
                    "tough",
                    "attack",
                    "move",
                    "move"
                ],
                "guard2",
                {
                    "type": "guard"
                }
            ],
            [
                [
                    "work",
                    "carry",
                    "carry",
                    "move",
                    "move"
                ],
                "harvester_3",
                {
                    "type": "harvester"
                }
            ],
            [
                [
                    "ranged_attack",
                    "move",
                    "move",
                    "move",
                    "move"
                ],
                "fighter4",
                {
                    "type": "ranged_fighter"
                }
            ],
            [
                [
                    "heal",
                    "heal",
                    "move",
                    "move",
                    "move"
                ],
                "healer5",
                {
                    "type": "healer"
                }
            ]
        ]
    }
}

以下代码返回0:

console.log(Object.keys(Memory.q).length);

显而易见,Memory.q实际上拥有对产卵地点的引用。

logging just(Memory.q)输出[Object object]引用,所以我知道它存在于某个地方。

我错过了什么?或者这只是故障?

1 个答案:

答案 0 :(得分:1)

Woops。

请记住,整个脚本的每个刻度都会重新运行..我忘记了。

在我的脚本开头我正在初始化Memory.q = {};每个刻度线,所以它是清空对象,然后再次填充它,这就是检查失败的原因。我将初始代码更改为:

if (typeof Memory.q == "undefined") {
    Memory.q = {};
}

干杯!