node.js - 具有 2 个值的数组列表,并将其排序为前 10 个列表

标签 node.js discord.js

我正在开发一个 Discord 机器人,并拥有一个带有 fs(npm 包)的信誉系统,并将人们的代表保存在一个文件中,并按照他们的不和谐 ID 来命名文件名

现在我正在处理前 10 个命令,并且需要一些帮助,我目前有以下代码:

 let users = [];
 let reps = [];
 fs.readdirSync('./data/reps/').forEach(obj => {
   users.push(obj.replace('.json', ''))
   let file = fs.readFileSync(`./data/reps/${obj}`)
   let data = JSON.parse(file)
   reps.push(data.reps)
 })
 let top = [...users, ...reps]
 top.sort((a,b) => {a - b})
 console.log(top)

用户的文件如下:

{
    "users": [
        "437762415275278337"
    ],
    "reps": 1
}

users 是当前用户,不能再代表该角色,并且不需要在命令中使用它

我想要获取前 10 名代表,以便我可以获得用户 ID 以及他们有多少个代表,我如何使用上面的代码来做到这一点?

最佳答案

你可以试试这个

const topTen = fs.readdirSync('./data/reps/').map(obj => {
    const file = fs.readFileSync(`./data/reps/${obj}`);
    const data = JSON.parse(file);

    return { ...data, name: obj.replace('.json', '') };
 }).sort((a, b) => a.reps - b.reps).slice(0, 10);

 console.log(topTen);

关于node.js - 具有 2 个值的数组列表,并将其排序为前 10 个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62271166/

相关文章:

discord.js - 检查用户是否在角色数组中具有特定角色

node.js - 在 Windows 10 中的 node.js 中运行时,index.pug 文件 View 中的更改不会实时重新加载,也不会在使用 nodemon 刷新后重新加载

javascript - Promisify 是做什么的?

node.js - 我正在尝试使用 .ebextension 配置在弹性 bean 堆栈上安装 pdftk 服务器,但无法安装

javascript - Node Canvas 对未知字符使用后备字体

node.js - Heroku 上的 js 错误 : cannot find module Discord.

node.js - 如何将 Opus 流从 Discord 传输到 RTP

node.js - 在两个 Node.js 实例之间共享文件

android - react 原生 : fetch request failed with error - TypeError: Network request failed(…)

javascript - .addRole 和 .removeRole 问题