我有以下HTML:
identifier var1 var2 var3
sample_A 30 D red
sample_B.1 28 D orange
sample_B.2 N
sample_C.1 27 E orange
sample_C.2 32 yellow
sample_C.3 green
我希望每h4可以得到<div class="ratings">
<h4>
<a href="https://www.horoscope.com/star-ratings/today/aquarius">
Sex
<i class="icon-star-filled highlight"></i>
<i class="icon-star-filled highlight"></i>
<i class="icon-star-filled highlight"></i>
<i class="icon-star-filled"></i>
<i class="icon-star-filled"></i>
</a>
</h4>
<h4>
<a href="https://www.horoscope.com/star-ratings/today/aquarius">
Hustle
<i class="icon-star-filled highlight"></i>
<i class="icon-star-filled highlight"></i>
<i class="icon-star-filled highlight"></i>
<i class="icon-star-filled"></i>
<i class="icon-star-filled"></i>
</a>
</h4>
<h4>
<a href="https://www.horoscope.com/star-ratings/today/aquarius">
Vibe
<i class="icon-star-filled highlight"></i>
<i class="icon-star-filled highlight"></i>
<i class="icon-star-filled highlight"></i>
<i class="icon-star-filled"></i>
<i class="icon-star-filled"></i>
</a>
</h4>
<h4>
<a href="https://www.horoscope.com/star-ratings/today/aquarius">
Success
<i class="icon-star-filled highlight"></i>
<i class="icon-star-filled highlight"></i>
<i class="icon-star-filled"></i>
<i class="icon-star-filled"></i>
<i class="icon-star-filled"></i>
</a>
</h4>
</div>
类的元素数量。
为此,我执行了以下操作:
.highlight
这将返回:
let $ = cheerio.load(response.data);
let zodiacRatings = $('.ratings>h4');
let ratings = [];
rawZodiacRatings.map((key, val) => {
let $ = cheerio.load(val);
ratings.push($('.highlight').length);
});
console.log(ratings);
是我想要的。
但是我认为有一种更好的方法来获取每个[ 3, 3, 3, 2 ]
的{{1}}的数量。我知道我可以在map()中使用.highlight
,但这确实给了我更多信息,不仅仅是:<h4>
。
答案 0 :(得分:2)
那呢?在某个时候,您需要将其从jQuery选择器数组切换到数组。
//switch it from jquery selectors to an actual array
let zodiacRatings = $('.ratings>h4').toArray();
//return a new array with the number lengths selected.
let ratings = zodiacRatings.map(x=>{
return $(x).find('.highlight').length
})
console.log(ratings)
答案 1 :(得分:1)
更简洁的是:
$('h4').map((i, el) => $(el).find('.highlight').length).get()
或
$('h4').get().map((el) => $(el).find('.highlight').length)
请注意,cheerio贴图(第一个)具有一个额外的i参数,这很烦人,但通常这样做很有用。