Cheerio.js .each() 函数在与 .find('a').text() 一起使用时返回一个大字符串

Cheerio.js .each() function is returning one large string when used with .find('a').text()

我正在使用 CheerioJS 从站点抓取文本列表。我正确地找到了文本,但是在 table 行的数组上使用 .each 时发生了一些奇怪的事情。

这是我的代码

const getTopCollections = async () => {
const response = await axios.get('https://www.nft-stats.com/top-collections/7d')
const $ = cheerio.load(response.data)

const return_data = []

const table = $('table').children('tbody')
table.each((i, element) => {
    let col_name = $(element).find('a').text()
    return_data.push(col_name)
})
console.log(return_data);
return return_data

我得到的不是 return_data 中的字符串数组,而是一个包含所有文本的大字符串,如下所示:

One big String

我猜这与 CheerioJS returns 如何从 .each() 获取数据有关?我尝试将每个 .find().text() 的结果保存到它自己的变量中,然后插入它,但这并没有解决它。

正如我在评论中所说,Cheerio 是 jQuery 的一个奇怪的克隆,并且与它的行为并不完全相同。 $(element).find('a') 找到所有 <a> 但 returns 一个 Cheerio 对象。您可以使用

迭代链接
$(element).find('a').each( ..... push etc )

$(element).find('a').toArray().forEach( element => ... )