我有一个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)