Javascript 可以在JSON文件中查看多组对象吗?

Javascript 可以在JSON文件中查看多组对象吗?,javascript,node.js,discord,discord.js,Javascript,Node.js,Discord,Discord.js,因此,我希望在不使用数据库的情况下制作一个水平测量系统。是的,我知道数据库是更好的方式,但是升级系统只是针对我自己的服务器,没有太多人在谈论,我还没有学会如何使用数据库和集成它们,所以我想做一些我现在理解的更小的事情 现在我已经设置好为任何发送消息的人保存一个级别和经验。我希望不用做一堆“if-else”语句,而是使用另一个JSON文件来存储每个级别所需的exp。我想这样安排 { "level": 2, "expRequired": 100 }

因此,我希望在不使用数据库的情况下制作一个水平测量系统。是的,我知道数据库是更好的方式,但是升级系统只是针对我自己的服务器,没有太多人在谈论,我还没有学会如何使用数据库和集成它们,所以我想做一些我现在理解的更小的事情

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

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

{
   "level": 3,
   "expRequired": 300
}
是否有一种方法可以使用此方法检查每个分组,并将其与消息作者当前的exp进行比较?差不多

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

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

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

for(let i = 0; i < levels.length; i++) {
    if (memberExp[message.author.id].exp > levels[i]) {
        memberExp[message.author.id].level = i
    } 
}
for(设i=0;ilevels[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!`)
}
//还记得以前的级别吗
让previousLevel=memberExp[message.author.id].level
//根据xp升级
for(设i=0;ilevels[i]){
memberExp[message.author.id].level=i
} 
}
//检查我们获得了多少等级
let AmountGoven=memberExp[message.author.id].level-previousLevel
//如果我们获得的值超过0,则可以显示一条消息
如果(获得的数量>0){
log(`恭喜!您获得了${amountgovered}级别!`)
}

我认为这里的问题是,您需要对关卡级别进行扩展。i、 e.给出一个更完整的示例,说明级别
如何启用
禁用
功能,以及该功能是什么。这种方法的唯一问题是,它会从级别0开始,直到达到100 exp,对吗?因为如果它们有50个exp,那么它们只会大于级别[0],这将使memberExp[message.author.id].level=0,不是吗?我现在很难同时处理多个任务,所以我的大脑没有正确思考,所以如果我没有正确理解,请道歉。更别说愚蠢的我了。我只需要在x上加1,它就等于正确的水平。谢谢确切地这只是因为数组从0开始计数。如果某人的级别为0,你可以在界面中显示“1”。好的,当这可以达到该级别时,我还要祝贺该人升级。但我似乎不知道该怎么做。如果我把它放在for循环中,它会显示到当前级别的每个级别。我不知道我该如何在for循环之外检查它。老兄,你真是个救命恩人。非常感谢你的帮助。这真的是整个事情中最难的部分,所以现在看到它工作让我非常高兴和兴奋。
// 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!`)
}