0
var svlist = [];
        var svlistname = [];
        let rankEmbed = new Discord.RichEmbed()
        message.guild.members.forEach(member =>{
            if(!xp[`${member.user.id}-${message.guild.id}`]){
                return;
            }
            svlist.push(member.user.id)
            svlistname.push(member.user.username)
        })
        console.log(`${xp[`${svlist[0]}-${message.guild.id}`].level}`)
        for(var i = 0; i < svlist.length; i++){
            rankEmbed.addField(`${svlistname[i]}`, `Level ${xp[`${svlist[i]}-${message.guild.id}`].level}`)
        }
        message.channel.send(rankEmbed)
        break;

I am making a leaderboard for levels, and I want to sort by level. Currently it's random because forEacesvlist.push is just choosing random members. How could I rewrite this so svlist gets sorted according to the user's level? (Level number is xp['${member.user.id}-${message.guild.id}'].level)

1 Answer 1

1

You can do it very easily with the Array.sort() function. But you need to change the way you store your values. This is a better and proper way:

var leaderboard = [];
let rankEmbed = new Discord.RichEmbed()
message.guild.members.forEach(member => {
    if(!xp[`${member.user.id}-${message.guild.id}`]){
        return;
    }
    leaderboard.push({
        name: member.user.username,
        level: xp[`${member.user.id}-${message.guild.id}`]
    });
});
// Sort the leaderboard
leaderboard.sort((memberA, memberB) => {
    // Return the member who has the highest level
    return memberB.level - memberA.level;
}).forEach((member) => {
    rankEmbed.addField(member.name, `Level: ${member.level}`);
});

message.channel.send(rankEmbed)
break;
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.