返回

javascript-从数组内的对象中获取最大的 int

发布时间:2022-08-19 01:50:37 214
# 前端

我目前正在构建一个 Discord.js 机器人,如果我想根据你达到的级别给予角色奖励。

这是我确定要赋予什么角色的代码的主要部分,当您的角色奖励只有 1 级差异(所以从 1 到 2 级)时,这非常有效,但如果我从 4 级到 5 级则没有知道要删除什么并且只是崩溃,因为prevLvl未定义。

当您达到某个里程碑时,它需要赋予一个新角色并删除以前的角色。

memberData.level = 4;

levelUpRoles = [ //These ones get pushed in array by user
    {role: 'id1', level: 1},
    {role: 'id2', level: 2},
    {role: 'id3', level: 5},
    {role: 'id4', level: 20},
    {role: 'id5', level: 10},
]

let newLvl = levelUpRoles.find(object => object.level === memberData.level);
let prevLvl = levelUpRoles.find(object => object.level === memberData.level - 1);

if (newLvl) {
    target.roles.add(newLvl.role).catch(console.error);

    target.roles.remove(prevLvl.role).catch(console.error);
}

我希望这是有道理的。提前感谢!

编辑:

我想我已经非常接近了,但现在是凌晨2:25,我放弃了。我明天继续。这就是我迄今为止能够想到的:

我将prevLvl更改为:

let prevLvl = levelUpRoles.filter(object => object.level < memberData.level).sort(function (a, b) {return a.level - b.level}).slice(0,-1).slice(-1);
                let newLvl = levelUpRoles.find(object => object.level === memberData.level);
                if (newLvl) {
                    console.log(newLvl);
                    target.roles.add(newLvl.role).catch(console.error);
                    console.log(prevLvl);
                    if (prevLvl) {
                        target.roles.remove(prevLvl.role).catch(console.error);
                    }
                }

基本上,它首先过滤我级别下的所有角色,然后从级别对所有角色进行排序,然后删除我当前的角色,然后删除除最高级别之外的所有角色。

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(1)
按点赞数排序
用户头像