【问题标题】:Loop through Snowflake array循环遍历雪花数组
【发布时间】:2017-08-31 04:15:12
【问题描述】:

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

数据如下:

  '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 文档,但我仍然不确定如何从集合中提取用户名数据。

任何帮助都会有所帮助。

【问题讨论】:

  • 也许做一个 console.log(JSON.stringify(test.members, null, 2);) 的 pastebin 我们不能像那样真正检查 test.members 的数据结构:(
  • 回踢 { "_array": null, "_keyArray": null }
  • 这意味着它的空对象不是数组,那么你从哪里获得OP的数据?
  • console.log(test.members);输出我发布的数据。
  • 好吧,这与数组和 for.. 无关。我猜你尝试更多地阅读 discord.js api,看看你是否可以从那里提取你的用户和名称。抱歉,我帮不上什么忙

标签: javascript node.js discord discord.js


【解决方案1】:

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

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);
}

【讨论】:

    【解决方案2】:

    TypeError: 无法读取 null 的属性“用户”

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

    user.user.username

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

    【讨论】:

    • test.members 是一个数组,这就是我使用 console.log 获得 OP 数组结构的方式。但你是对的,你回来是不确定的。知道这有什么问题吗?
    • var u; 在第一行中使用了var u = undefined;,而不是for.. in 中提供的u,所以删除它。 @卡尔
    • 我认为我发布了错误信息。我更新了我的 test.members 的数据输出。
    • 所以如果 test.members 真的是一个数组。 for(var u in test.members){ console.log(u, test.members[u]); } 应该给你一些东西,我不知道如何在那里得到'u == undefined'。 @卡尔
    • 踢回一个 _array null _keyArray null
    猜你喜欢
    • 2019-06-27
    • 2022-01-15
    • 2014-06-04
    • 1970-01-01
    • 2019-07-10
    • 1970-01-01
    • 2018-04-01
    相关资源
    最近更新 更多