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

JavaScript中如何访问discord.js fetch返回的Map内User对象的username属性

解决JavaScript中从fetch返回的Map里获取User对象username的问题

嘿,我来帮你搞定这个问题!你现在的核心是从只有一个条目的Map里取出User对象,再访问它的username属性,之前的尝试没成功大概率是因为没正确从Map里拿到User实例,我给你几个可行的方案:

方法1:直接提取Map的第一个值(最简洁)

因为你的Map只有一个键值对,直接把Map的值转成数组后取第一个元素就行:

// 假设你的Map变量叫thisVar
const user = Array.from(thisVar.values())[0];
const targetUsername = user.username;
console.log(targetUsername); // 输出someUserName

thisVar.values()会返回Map所有值的迭代器,用Array.from()转成数组后,第一个元素就是你要的User对象,之后直接访问username就没问题了。

方法2:通过唯一的键获取User对象

既然你说Map的键和User对象的id完全相同,也可以先拿到这个键,再用Map.get()方法取出对象:

// 获取Map里的唯一键
const userId = thisVar.keys().next().value;
// 用键取出User对象
const user = thisVar.get(userId);
// 访问username
const targetUsername = user.username;

这里keys().next().value是从Map的键迭代器里取出第一个(也是唯一一个)键值,再传给get()就能拿到对应的User实例。

方法3:用for...of遍历Map

这种方式更直观,适合不确定Map条目数量的情况(不过你这里只有一个):

for (const [key, user] of thisVar) {
  const targetUsername = user.username;
  console.log(targetUsername);
  break; // 因为只有一个条目,遍历一次就退出循环
}

为什么之前的尝试没成功?

你之前用let someVar = thisVar.username;肯定不行,因为thisVar是Map对象,它本身没有username属性;而如果用get()没成功,大概率是你传的键不对——比如你可能硬写了字符串<id>,而不是Map实际存储的那个真实id值,上面的方法会自动获取到正确的键,所以能解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 06:38:13