我有一个Discord机器人,它从无序列表中抓取Web数据,ul中的列表项的数量每周可能会有所不同,从最少5个到最大20个。

我使用以下代码来抓取数据(node.js和Cheerio):

$('li').eq(65).siblings().each(function(i, elem) {
                details[i] = $(this).text().replace(/\*/g, ' ').split('/').join('or').trim();
            });


我的问题是,因为列表项元素的数量可以每周更改一次,所以我不知道渲染嵌入到Discord屏幕时要使用多少个addField对象,因此我无法按数组索引位置添加它们,因为我要么具有null值或字段不足,我需要能够生成addField对象,以便返回的每个数组索引都位于其自己的addField内部。

嵌入使用以下代码呈现:

const embed = new Discord.RichEmbed()
                    .setColor(0xf1c40f)
                    .setTitle('Listing For The Week:')
                    .addField('Items', `${details}`)
                    .setTimestamp();

                client.channels.get('546033223172620288').send({ embed });


这只会在一个字段中显示整个已抓取的数据,并且您可以想象它看起来很恐怖,这就是为什么我要将数据迭代到单独的.addFields中的原因。

我正在学习js,那么我该怎么做才能获得理想的结果?我正在做这样的事情:

for (let i = 0; i < details.length; i++) {
               .addField('ITEM:', details);
            }


但是我不知道如何使用.addField对象并不断出错,并且发现google并没有帮助我找出如何在for循环中使用addField上的点符号来实现这一点。

最佳答案

我猜你是正确的轨道之一。但是,您不能像那样简单地拥有一个“随机” .addField()。只需在循环中利用现有的embed变量-embed.addField('ITEM', details)

10-08 20:03