You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Discord.js使用for...in遍历JSON仅得guildID 如何正确读取userID

问题根源

你的JSON数据顶层结构以GuildID作为键,对应的值才是当前公会下的用户数据集,你直接用for...in遍历顶层的money对象,拿到的自然只有GuildID,而非你需要的UserID。

修正代码
// 先提取当前公会的用户数据集,避免重复取值
const currentGuildUserMap = money[message.guild.id]
// 前置校验,避免当前公会无数据时报错
if (!currentGuildUserMap) return

for (let userID in currentGuildUserMap) {
    res.push({
        "guildid": message.guild.id,
        "id": userID,
        "money": currentGuildUserMap[userID].money
    })
}

// 排序逻辑放到循环外执行,避免循环n次就执行n次排序造成性能浪费
// 直接取对象的money属性排序,比通过Object.values取索引更稳定清晰
res.sort((a, b) => b.money - a.money)
注意事项
  • 你给出的JSON示例里GuildID、UserID后面带的<======GuildID/<======userID属于标注内容,实际存储数据时不要保留这些后缀,否则你遍历拿到的userID会携带多余字符,无法和Discord接口返回的真实用户ID匹配
  • 如果需要遍历所有公会的所有用户,可以先遍历顶层money对象拿到所有GuildID,再嵌套遍历每个GuildID对应的用户数据集即可

内容的提问来源于stack exchange,提问作者Kejlo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 23:48:01