我想迭代找到的结构,但我不知道最好的方法是什么。
我试过这个:
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的全新手。你能就此提出建议吗?
答案 0 :(得分:2)
ext
包含密钥,而不是结果的值。
所以我所做的就是将结果移出循环并输入一个名为results
的变量。这样,我有一个变量可以在循环中引用。
最近发生的是,因为代码中的ext
存储了密钥,这是一个字符串类型值。它返回字符串对象的结果,你正在执行"key".energy
之类的操作并返回值undefined
,因为String对象没有像这样的键。
所以下面是应该运行的代码:
var results = creep.room.find(FIND_MY_STRUCTURES, {filter: { structureType: STRUCTURE_EXTENSION }});
for (var ext in results){
console.log(results[ext].energy);
}
答案 1 :(得分:0)
不要忘记您也可以使用Array.forEach
函数和箭头函数表示法!
creep.room.find(FIND_MY_STRUCTURES, { filter: { structureType: STRUCTURE_EXTENSION } })
.forEach((ext) => { console.log(ext.energy); });