我有一个来自数据库的大型名称列表,我想过滤并计算特定名称值 - 在本例中为“匿名”。
例如:
<ul>
<li>Johnny Ace</li>
<li>Mary Adams</li>
<li>Bob Allen</li>
<li>Anonymous</li>
<li>Anonymous</li>
<li>Anonymous</li>
<li>Anonymous</li>
<li>Anonymous</li>
<li>David Brown</li>
<li>Sue Smith</li>
<li>John Williams</li>
</ul>
我希望结果是:
<ul>
<li>Johnny Ace</li>
<li>Mary Adams</li>
<li>Bob Allen</li>
<li>Anonymous (5)</li>
<li>David Brown</li>
<li>Sue Smith</li>
<li>John Williams</li>
</ul>
最好的方法是什么?
答案 0 :(得分:1)
使用:contains()
来获取长度并删除除第一个之外的所有内容,然后设置文本
var count=$('ul li:contains("Anonymous")').length;
$('ul li:contains("Anonymous")').not(':first').remove().end().text("Anonymous("+count+")");
答案 1 :(得分:0)
循环可能也很容易,适用于所有元素:
var categories = {},
category;
$('ul li').each(function(i, el){
category = $(el).text();
if (categories.hasOwnProperty(category)) {
categories[category] += 1;
} else {
categories[category] = 1;
}
});
$('ul').empty();
// print results
for(var key in categories){
$('ul').append('<li>' + key + ' (' + categories[key] + ')</li>');
}