【问题标题】:Is It Possible To Look at Multiple Groupings of Objects in a JSON file?是否可以查看 JSON 文件中的多个对象分组?
【发布时间】:2021-02-15 11:09:03
【问题描述】:

所以我想在不使用数据库的情况下制作一个调平系统。是的,我知道数据库是更好的选择,但调平系统仅适用于我自己的服务器,没有很多人在说话,而且我还没有学会如何使用数据库和集成它们,所以我想做我现在理解的较小的东西。

现在我已经为任何发送消息的人设置了一个级别和经验。我希望我可以使用另一个 JSON 文件来存储每个级别所需的 exp,而不是执行一堆“if else”语句。我想这样设置它

{
   "level": 2,
   "expRequired": 100
},

{
   "level": 3,
   "expRequired": 300
}

有没有办法可以使用这种方法并检查每个分组并将其与消息作者的当前 exp 进行比较?类似的东西

if (memberExp[message.author.id].exp == levels.expRequired) {
   memberExp[message.author.id].level = levels.level
}

【问题讨论】:

  • 我认为这里的问题是您需要扩展关卡的门限。即给出一个更完整的例子,说明enabledisable 的级别是怎样一个特性以及这个特性是什么。

标签: javascript node.js discord discord.js


【解决方案1】:

在您的问题中,级别很容易成为一个数组(在 JSON 文件中):

levels : [0, 100, 300, 1000, 5000]

然后你可以根据它匹配的最低条目检查 exp,这将是你的级别

for(let i = 0; i < levels.length; i++) {
    if (memberExp[message.author.id].exp > levels[i]) {
        memberExp[message.author.id].level = i
    } 
}

更新

我添加了一个等级检查,以便您查看您获得了多少等级

// remember the old level
let previousLevel = memberExp[message.author.id].level

// level up according to xp
for(let i = 0; i < levels.length; i++) {
    if (memberExp[message.author.id].exp > levels[i]) {
        memberExp[message.author.id].level = i
    } 
}

// check how many levels we gained
let amountGained = memberExp[message.author.id].level - previousLevel

// if we gained more than 0 we can display a message
if(amountGained > 0) {
    console.log(`Congrats! You gained ${amountGained} levels!`)
}

【讨论】:

  • 我对这种方法的唯一问题是它会从 0 级开始关卡,直到达到 100 exp 对吧?因为如果他们有 50 exp,他们只会比 levels[0] 大,这会使 memberExp[message.author.id].level = 0 不是吗?我现在正在努力处理多项任务,所以我的大脑没有正确思考,如果我理解不正确,请道歉。
  • 别介意愚蠢的我。我只需要将 1 添加到 x 以使其等于正确的级别。谢谢!
  • 没错!只是因为数组从0开始计数。如果有人是0级,则可以在界面中显示“1”。
  • 好的,虽然这有助于提升等级,但我也想在他们升级时向他们表示祝贺。但我似乎无法弄清楚如何做到这一点。如果我把它放在 for 循环中,它会显示每个级别,直到我当前的级别。我不确定如何在 for 循环之外检查它。
  • 老兄,你真的是一个救生员,非常感谢你的帮助。这真的是整个事情中最困难的部分,所以现在看到它工作让我非常高兴和兴奋。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-16
  • 1970-01-01
  • 2012-08-08
  • 2020-07-31
  • 1970-01-01
  • 2018-06-29
  • 1970-01-01
相关资源
最近更新 更多