如果你有多个物品,我怎么能把它放在那里,它显示为“钓鱼竿x3”? [库存命令]

问题描述

一个问题,如果你有多个物品,我怎样才能让它显示为“钓鱼竿(3)”? 将 3 更改为表示项目数

因为如果嵌入超过最大大小,discord 将返回错误。谢谢!

库存代码

const db = require('quick.db');
const discord = require('discord.js');

module.exports = {
    name: "inventory",description: "View your inventory",async run (client,message,args) {
        let items = await db.fetch(message.author.id);
        if(items === null) items = "nothing"

        const Embed = new discord.MessageEmbed()
        .addField('Inventory',items)

        message.channel.send(Embed);
    }
}

TL;DR 如何删除重复项并在项旁边放置项数。

解决方法

您基本上需要将您的项目数据结构转换为按项目类型组织的其他数据结构。但我们不知道“物品”到底是什么。这只是一个可能的例子。假设您的库存是一组对象,您可以执行以下操作:

var items = [{name:'fishing pole'},{name:'sword'},{name:'fishing pole'},{name:'fish'},{name:'fishing pole'}];
console.log('Disorganized:',items);

var inventoryMap = new Map();

items.forEach(function(item,index,array) {
  var itemArray = inventoryMap.get(item.name);
  if (itemArray) {
    itemArray.push(item);
  } else {
    inventoryMap.set(item.name,[item]);
  }
});

console.log('Sorted:');

inventoryMap.forEach( function(value,key) {
  console.log(key,'('+value.length+')');
});