有人可以解释为什么harvesters[i]在这种情况下会返回undefined吗?我之前使用过类似的代码,没有任何问题。这是游戏爬行的。

  var harvesters=_(Game.creeps).filter( { memory: { role: 'harvester' } } );

  for(var i in harvesters)
  {
    //console.log(harvesters[i]); //this is the debug code I mention below
    harvesters[i].memory.sourceid=0;
  }
}


经过一些测试(由于评论),我发现harvesters[i]没有返回我期望的收割机对象。...每个harvester显然是的实例。

function wrapperValue() {
      return baseWrapperValue(this.__wrapped__, this.__actions__);
    }


当我尝试将其输出到控制台时。为什么这不是蠕变对象?

最佳答案

您当前正在使用lodash的链式序列功能,为了提取未包装的值,您需要调用.value()

您的代码必须看起来像这样:

const harvesters = _(Game.creeps).filter(
  {
    memory: {
      role: 'harvester'
    }
  }
).value();


或者,您可以直接使用_.filter

const harvesters = _.filter(Game.creeps, {
  memory: {
    role: 'harvester'
  }
});

09-28 05:50