将抓取的数据迭代到 return 作为嵌入内的字段对象
Iterating scraped data to return as a field objects inside an embed
我有一个从无序列表中抓取网络数据的 Discord 机器人,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 对象,所以我无法按数组索引位置添加它们我要么有空值,要么没有足够的字段,我需要能够生成 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 无法帮助我找到如何使用 addField 上的点符号来解决这个问题在 for 循环中。
我想你是正确的轨道之一。但是,您不能像那样简单地使用 "random" .addField()
。只需在循环中使用现有的 embed
变量 - embed.addField('ITEM', details)
我有一个从无序列表中抓取网络数据的 Discord 机器人,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 对象,所以我无法按数组索引位置添加它们我要么有空值,要么没有足够的字段,我需要能够生成 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 无法帮助我找到如何使用 addField 上的点符号来解决这个问题在 for 循环中。
我想你是正确的轨道之一。但是,您不能像那样简单地使用 "random" .addField()
。只需在循环中使用现有的 embed
变量 - embed.addField('ITEM', details)