4

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

我试过这个:

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 的新手。你能就此提出建议吗?

4

2 回答 2

2

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

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

所以发生了什么,因为ext您的代码中存储了密钥,这是一个字符串类型的值。它从字符串对象返回结果,你正在做类似的事情"key".energy并返回 value undefined,因为 String 对象没有这样的键。

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

var results = creep.room.find(FIND_MY_STRUCTURES, {filter: { structureType: STRUCTURE_EXTENSION }});
for (var ext in results){
    console.log(results[ext].energy);
}
于 2015-06-20T12:46:11.400 回答
0

不要忘记您也可以使用Array.forEach函数和箭头函数表示法!

creep.room.find(FIND_MY_STRUCTURES, { filter: { structureType: STRUCTURE_EXTENSION } })
    .forEach((ext) => { console.log(ext.energy); });
于 2015-09-29T18:02:04.520 回答