迭代过滤后的列表会返回undefined

时间:2017-05-01 13:31:29

标签: javascript screeps

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

  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__);
    }

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

1 个答案:

答案 0 :(得分:2)

您目前正在使用lodash的链式序列功能,以便提取您需要调用.value()的未打包值。

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

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

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

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