Discord.js 集合;如何从集合中的数组中导航和抓取/计数对象

Posted

技术标签:

【中文标题】Discord.js 集合;如何从集合中的数组中导航和抓取/计数对象【英文标题】:Discord.js collection; how to navigate and grab/count objects from an array in a collection 【发布时间】:2020-08-24 03:05:09 【问题描述】:

我有一个 discord.js Collection,如下所示:

Collection(1) [Map] 
  '403547647215927306' => 
    dispatcher: StreamDispatcher 
      _writableState: [WritableState],
      writable: true,
      _events: [Object: null prototype],
      _eventsCount: 5,
      _maxListeners: undefined,
      player: [AudioPlayer],
      streamOptions: [Object],
      streams: [Object],
      _nonce: 2369,
      _nonceBuffer: <Buffer 00 00 09 41 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00>,
      pausedSince: null,
      _writeCallback: [Function (anonymous)],
      broadcast: undefined,
      _pausedTime: 0,
      _silentPausedTime: 0,
      count: 2369,
      startTime: 1588923698004,
      [Symbol(kCapture)]: false
    ,
    queue: [ [Object], [Object], [Object] ],
    connection: null,
    position: 0
  

我想分离并计算调度程序的数量和队列中的对象数量。我已经能够使用

获取#dispatcher(s)
var playlistCount = client.playlists.filter(q => q.dispatcher).size // returns 1 for code, 2 for image

但使用类似的方法

var playlistList = client.playlists.filter(q => q.queue).size // returns 1 for code, 2 for image

这应该是队列中的3 歌曲,而不是活动队列中的1(或图片中的2)。谁能建议如何过滤队列对象以返回大小/长度/计数?

queue 数组(如果相关)

【问题讨论】:

【参考方案1】:

您可以使用find() 找到queue 并获取它的length

var playlistList = client.playlists.find(playlist => playlist.queue).length

【讨论】:

感谢您的回复!尝试这个我仍然得到 [object object] 返回 Image 1(上半部分):puu.sh/FI85v.png Image 2(下半部分):puu.sh/FI89k.png 真的认为编辑会起作用(我已经在原版之后尝试过)但它仍然返回未定义。

以上是关于Discord.js 集合;如何从集合中的数组中导航和抓取/计数对象的主要内容,如果未能解决你的问题,请参考以下文章

从函数中导出数据 [mysql, node.js, discord.js]

将数组导出到 Node.js 中的另一个文件

从 mongodb 集合中导出有效的 json

如何在 discord.js 中获取消息中某个表情符号反应的计数

如果 Discord.JS 中缺少要查找的字段,我如何为我的 MongoDB 集合添加新字段?

从 discord.js 中的数组中删除 args