首页 > 解决方案 > 具有 2 个值的数组列表并将其放入前 10 名列表

问题描述

我正在开发一个 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 是不能再代表 persion 的当前用户,不需要在命令中使用它

我想获得前 10 名的代表,这样我就可以获得用户 ID 以及他们有多少代表,我怎么能用上面的代码做到这一点?

标签: node.jsdiscord.js

解决方案


你可以试试这个

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);

推荐阅读