遍历雪花数组

Loop through Snowflake array

我正在寻找从该集合中获取数据的方法。

数据如下:

  '0000000' => GuildMember {
  guild:
   Guild {
     members: [Object],
     id: '000000',
     name: 'Zombie',
     _rawVoiceStates: [Object] },
  user:
   User {
     id: '0000000',
     username: 'Orc',
  _roles: [ '0000' ],
  nickname: 'Orc',
  joinedTimestamp: 00000,
  lastMessageID: null },

  '0000000' => GuildMember {
  guild:
   Guild {
     members: [Object],
     id: '000000',
     name: 'Zombie',
     _rawVoiceStates: [Object] },
  user:
   User {
     id: '0000001',
     username: 'Orc1',
  _roles: [ '0000' ],
  nickname: 'Orc',
  joinedTimestamp: 00000,
  lastMessageID: null },
  _array: null,
  _keyArray: null }

我当前的循环是:

var user;
for(var u in test.members){
   user = test.members[u];
    console.log("["+u+"] "+user.username);
}

它目前回退了 TypeError: Cannot read property 'user' of null

我最初认为这个数据是一个数组,但根据 Discord.js 文档并不是这样,但我仍然不确定如何从集合中提取用户名数据。

任何帮助都会有所帮助。

TypeError: Cannot read property 'user' of null

表示您的 user 变量为空,这意味着 test.members[u] 为空。 首先尝试记录 test.members 并查看它是否已填满。

user.user.username

可能是错误的。看起来应该只是 user.username

现在我查看了 discord.js API,我认为你要做的是这样的(假设测试是你的公会对象):

test.members.forEach(function(guildMember, guildMemberId) {
   console.log(guildMemberId, guildMember.user.username);
})

如果这不起作用,请尝试以下方法:

var membersArray = test.members.array();

for(var guildMemberId in membersArray) {
   console.log(guildMemberId, membersArray[guildMemberId].user.username);
}