我有一个包含以下内容的示例JSON文件:

{
    "119996306407030785": {
        "duel": {
            "class": "mage",
            "totalDamage": 64,
            "wins": 5,
            "losses": 2
        },
        "weather": {
            "location": "46544"
        }
    },
    "119333755579138048": {
        "duel": {
            "class": "rogue",
            "totalDamage": 35,
            "losses": 1,
            "wins": 2
        },
        "weather": {
            "location": "95825"
        }
    },
    "112006834713329664": {
        "duel": {
            "totalDamage": 33,
            "losses": 1,
            "wins": 7
        }
    }
}


119996306407030785是一个用户ID。我想按“前5名”概念中所有用户的最高对决。

我想要上述JSON的输出为:

112006834713329664 - 7 wins
119996306407030785 - 5 wins
119333755579138048 - 2 wins


在谷歌搜索时,我已经看到多个与此问题相关的问题,但是找不到与我的设置类似的JSON问题。

考虑到我的userID的设置方式及其随机性,是否可行?如果是这样,怎么办?请注意,我不仅需要返回获胜次数,还需要与该获胜金额相关的userID。我也只想返回前5名,即使有几十个userID。

最佳答案

var data = { "119996306407030785": { "duel": { "class": "mage", "totalDamage": 64, "wins": 5, "losses": 2 }, "weather": { "location": "46544" } }, "119333755579138048": { "duel": { "class": "rogue", "totalDamage": 35, "losses": 1, "wins": 2 }, "weather": { "location": "95825" } }, "112006834713329664": { "duel": { "totalDamage": 33, "losses": 1, "wins": 7 } } }

var a = Object.keys(data).map(e => ({id: e, wins: data[e].duel.wins}))
        .sort((a, b) => b.wins - a.wins);

document.write('<pre>' + JSON.stringify(a, 0, 2) + '</pre>')

10-06 04:37
查看更多