Object.keys не работает?
Со следующим в памяти: (это можно скопировать / вставить прямо на вкладку Память и зафиксировать)
{
"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 ответ
Woops.
Помните, что каждый тик весь сценарий повторяется.. Что я забыл.
В начале моего сценария я инициализировал Memory.q = {}; каждый тик, поэтому он очищал объект, а затем снова заполнял его, поэтому проверка не удалась. Я изменил исходный код на:
if (typeof Memory.q == "undefined") {
Memory.q = {};
}
Ура!