我使用map
和Cheerio结果列表来返回属性值。我想要的是一个包含属性值列表的变量(在这种情况下是ID' s),而是我获取ID和额外数据。
以下代码打印ID列表:
let ids = $('[data-profileid]').map(function() {
console.log($(this).attr('data-profileid'))
})
结果:
1012938412
493240324
123948532
423948234
...
但是,以下代码返回ID,但格式不同:
let ids = $('[data-profileid]').map(function() {
return $(this).attr('data-profileid')
})
console.log(ids)
结果:
...
'69': '234234234,
'70': '9328402397432',
'71': '1324235234',
options:
{ withDomLvl1: true,
normalizeWhitespace: false,
xmlMode: false,
decodeEntities: true },
_root:
{ '0':
{ type: 'root',
name: 'root',
attribs: {},
...
这些额外数据是什么?当然不是必需的。我宁愿只有一个普通的阵列。
答案 0 :(得分:10)
由于返回值是包含数组的jQuery对象,因此它是 在结果上调用.get()以使用基本数组非常常见。
所以它看起来应该有效:
let ids = $('[data-profileid]').map(function() {
return $(this).attr('data-profileid')
}).get()
答案 1 :(得分:2)
这些额外数据是什么?当然不是必需的。我宁愿只有一个普通的阵列。
Cheerio有一个流畅的 API,这意味着它的大部分功能都会返回一个可以链接其他功能的对象。如果map
刚刚返回"普通数组"那么你就无法在结果上调用额外的Cheerio函数。你可以通过很多方法将其他函数调用链接到你的 map
调用的结果上,这会返回一个字符串数组,但是Cheerio的开发人员(以来自jQuery的开发人员的一个提示)选择保持一致的API而不是特殊情况下的胡椒。
如果你想要一个普通的阵列,Cheerio会为你提供一个方便的toArray
功能:
let ids = $('[data-profileid]').map(function() {
return $(this).attr('data-profileid')
});
console.log(ids.toArray());
// => [ '1012938412', '493240324', '123948532', '423948234' ]