0

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

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

我目前使用的不起作用。当我希望它默认为“公民”时,类型变量没有评估,而是作为“类型”进行。我在 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 使用了默认值。我已经在我的代码中修改了它。大卫韦尔登回答的计算值是我更具体地追求的。

4

1 回答 1

1

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

player[type] >= number

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

后者是es6 中新增的计算属性键的示例。

另请参阅常见错误的“变量作为键”部分。

于 2016-01-15T03:42:04.727 回答