使用动态变量访问 Meteor 中另一个变量的值?

Using a dynamic variable to access another variable's value in Meteor?

所以我试图使我的代码更加模块化以保持理智(并且因为它似乎比用五种以上不同的方式编写相同的代码更有效)。

但是,由于我的 JavaScript 知识显然不足,因此我 运行 在这方面遇到了困难。 我有一个购买各种单位类型的方法调用。在训练更高级的类型 citizen.workerssoldier.specific 之前,我想检查玩家是否有足够的特定类型的单位 citizenssoldiers。增加更高级的类型还不是我要解决的问题;我只是想确定基本单元是否以最小数量存在。

我目前使用的是不工作。当我希望它默认为 "citizens" 时,类型变量不会评估,而是会作为 "type" 进行评估。我在 2 个地方使用变量,用于评估目的的 if 语句和数据库更新中以减少该特定字段的数量。

当前代码:

'buy': function(cost, number, type) {
  type = type || "citizens";
  var currentUser = Meteor.user();
  var player = Players.findOne({createdBy: currentUser._id});
  if(player.credits >= cost && cost > 0 && player.type >= number && number > 0) {
    Players.update({createdBy: currentUser._id}, {$inc: {'credits': (0-cost), type: (0-number)}});
    return true;
  }
  return false;
},

到处搜索但没有找到我正在寻找的东西,甚至没有找到我可以开始并开始将其应用于我需要的东西。任何帮助都会很棒。

编辑:是的,我意识到我错误地使用了 javascript 的默认值。我已经在我的代码中修改了它。 David Weldon 回答的计算值是我更具体地追求的。

通过以下方式更改您的代码:

player[type] >= number

{$inc: {'credits': (0-cost), [type]: (0-number)}}

后者是一个computed property key的例子,在es6中是新的

另请参阅 common mistakes 的 'Variables as Keys' 部分。