javascript - JSON文件的前3个值
问题描述
如何仅发送 JSON 文件的前 3 个值?
xp.json
{
"405778045941841923":{"xp":12601,"level":43},
"437502925019807744":{"xp":221,"level":1},
"258877808489660416":{"xp":6623,"level":23}, ...
}
index.js
if (cmd === `${prefix}list`) {
console.log(Object.keys(xpfile).reduce((list, username) => {
list += `${username}: XP: ${xp[username].xp}\n`
return list
}, ''))
}
输出:
405778045941841923: XP: 12601
437502925019807744: XP: 221
258877808489660416: XP: 6623
381904022132752384: XP: 81
170563606109356032: XP: 2116
375336450008416267: XP: 70
400012805018746891: XP: 3494
400731769927761941: XP: 9152
327157513105571840: XP: 11 ...
我将不胜感激任何代码示例,因为我很难在代码中调用 JSON 对象,我基本上只想显示前 3 个最高的 XP
解决方案
我会排序,切片和减少
let j = {"405778045941841923":{"xp":12601,"level":43},"437502925019807744":{"xp":221,"level":1},"258877808489660416":{"xp":6623,"level":23}};
let top3 = Object.keys(j).sort((a, b) => j[b].xp - j[a].xp).slice(0, 3).reduce((a, b) => {
a[b] = j[b];
return a;
}, {});
console.log(top3);
如果您只想要没有其余对象的 xp,则可以使用以下内容
let top3 = Object.values(j).map(({xp}) => xp).sort((a, b) => b - a).slice(0, 3);
console.log(top3);
推荐阅读
- php - websockets 连接因 apache 和 Ratchet 而失败
- node.js - 我无法使用 npm 安装Sharp
- firebase - 如何查看邮箱和用户名
- javascript - 如何获得解析服务器查询的结果
- google-visualization - haxis 文本不显示所有记录且不能倾斜
- c++ - C++ 从多重继承向上转型;源不是多态的
- excel - 将部分文本匹配作为条件添加到计数唯一公式
- python - 使用开普勒方程用 vpython 显示轨道,但行星不会绕轨道运行
- python - python交互式/jupyter笔记本中的psycopg2 OperationalError
- python - 使用 Python3/mysqlclient 检索以 latin1 编码的数据时的字符编码问题