【问题标题】:Object.keys not working?Object.keys 不起作用?
【发布时间】:2015-01-11 23:01:18
【问题描述】:

内存中有以下内容:(可以直接复制/粘贴到内存选项卡并提交)

    {
    "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 实际上包含对生成位置的引用。

仅记录 (Memory.q) 输出 [Object object] 引用,所以我知道它存在于某处。

我错过了什么?还是这只是被窃听了?

【问题讨论】:

  • 当我尝试它时会记录1。不过,[spawn Spawn1] 是一个非常奇怪的键名。
  • 等等,它对你有用吗?什么...
  • 这个内存对象在搞乱我的大脑。

标签: javascript screeps


【解决方案1】:

哎呀。

请记住,整个脚本的每一次滴答都会再次运行。我忘记了。

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

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

干杯!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-25
    • 2013-09-25
    • 1970-01-01
    • 2018-11-13
    • 2021-03-28
    • 1970-01-01
    • 2017-12-12
    • 2017-11-19
    相关资源
    最近更新 更多