javascript - 如何正确地迭代结构

标签 javascript screeps

我想迭代找到的结构,但我不知道哪种方法最适合。

我试过这个:

for (var ext in creep.room.find(FIND_MY_STRUCTURES, {filter: { structureType: STRUCTURE_EXTENSION }})){
    console.log(ext.energy);
}

但它不起作用。

所以现在我正在使用一种可行的方法,但它看起来很丑陋:

for(var i = 0; i < creep.room.find(FIND_MY_STRUCTURES, {filter: { structureType: STRUCTURE_EXTENSION }}).length; i++) {
    var ext = creep.room.find(FIND_MY_STRUCTURES, {filter: { structureType: STRUCTURE_EXTENSION }})[i];
    console.log(ext.energy);
}

我不确定,也许这是一个与js有关的问题。我是js的新手。你能就此提出建议吗?

最佳答案

ext 包含键,而不是结果的值。

所以我所做的是将结果移出循环并放入一个名为 results 的变量中。这样,我就有了一个在循环中引用的变量。

所以这是怎么回事,因为你代码中的 ext 存储的是键,它是一个字符串类型的值。它从字符串对象返回结果,您正在执行类似 "key".energy 的操作并返回值 undefined,因为 String 对象没有像这样的 key 。

所以下面是应该工作的代码:

var results = creep.room.find(FIND_MY_STRUCTURES, {filter: { structureType: STRUCTURE_EXTENSION }});
for (var ext in results){
    console.log(results[ext].energy);
}

关于javascript - 如何正确地迭代结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30942113/

相关文章:

javascript - 游戏 Screeps - creep.room.find(Game.CONSTRUCTION_SITES);不工作

javascript - 如何在 Screeps 中生成一个带有前面名称标签的随机名称?

Javascript/jQuery - 需要在页面上查找原始文本,将后面的内容捕获到变量中,并用 HTML 替换原始文本

javascript - mongoose 和 nodejs 的 mongodb 连接超时错误

javascript - 如何为 angularjs 编写替换 dom 元素但保留绑定(bind)的指令

javascript - 运行 screeps 脚本时出错

javascript - 在一个函数中返回两个变量

javascript - 检查 Javascript 中是否存在 httponly cookie

javascript - Screeps:计算 body 的构建成本