首页 > 解决方案 > discord js如何通过降序对json文件进行排序

问题描述

我尝试在我的 json 文件中对钱进行排序,但每次我得到“money.slice 不是函数”时,有人可以帮忙吗?“money.sort((a,b)=>{b.money - a.money});” 不适用于我的 JSON 文件:

{"2858236346346":{"name":"user1","money":100}}, {"346342356347436":{"name":"user2","money":1000}}

我遇到问题的代码:

execute(client, message, args) {

    let rawdata = fs.readFileSync('./money.json');
    let money = JSON.parse(rawdata);
    console.log(money);

    const res = money.slice().sort((a, b) => b.money - a.money);
    console.log(res);

    let embed = new Discord.MessageEmbed()
      .setTitle("Najbogatsi Gracze")
    //if there are no results
    if (res.length === 0) {
      embed.setColor("RED");
      embed.setThumbnail("https://i.imgur.com/pWHpi7G.png");
      embed.addField("Nie znaleziono danych", "Wpisz na czacie $daily aby zdobyć pieniądze!")
    } else if (res.length < 10) {
      //less than 10 results
      embed.setColor("BLURPLE");
      embed.setThumbnail("https://i.imgur.com/pWHpi7G.png");
      for (i = 0; i < res.length; i++) {
        let member = message.guild.members.cache.get(res[i].id) || "Brak danych"
        if (member === "Brak danych") {
          embed.addField(`${i + 1}. ${member}`, `**Kasa:**: ${res[i].money}zł`);
        } else {
          embed.addField(`${i + 1}. ${member.user.username}`, `**Kasa:**: ${res[i].money}zł`);
        }
...

标签: node.jsjsondiscord.js

解决方案


没关系,我刚刚发现我们必须使用循环并在这种情况下定义新的“const”“res = [];” 那么我们可以推送一个新的json然后对其进行排序

let money = JSON.parse(fs.readFileSync("./money.json", "utf8"));

    const res = [];

  for(let userID in money){
    res.push({"id": userID, "money": money[userID].money })
    res.sort((a, b) => Object.values(b)[1] - Object.values(a)[1])
    console.log(money, res);
}

推荐阅读