如何显示删除的文本重复项的数量?

时间:2014-05-27 03:25:36

标签: jquery count duplicate-removal

我正在使用代码删除重复项,如下所述:jQuery Remove Duplicate Elements。它工作得很好,但我找不到代码来显示每个元素删除重复的次数。我认为这很简单,但我对jquery不是很有经验。

感谢shaunakde

var seen = {};
var counter = {};
var length = $('#links1 a, #links2 a').length;
console.log(length);
$('#links1 a, #links2 a').each(function(i) {
var txt = $(this).text();
if(seen[txt]){
    $(this).remove();
    counter[txt]++;
}
else{
    seen[txt]=true;
    counter[txt] = 1;
}
if(i==(length-1)){

    $.each(counter , function(i, val) { 
          $('a:contains('+i+')').html(i+' ('+val+')')

});

}

});

现在可以正确打印出来:   - 项目1(4)   - 项目2(1)   - 项目3(5)

括号内的数字是删除的次数(+1)。

2 个答案:

答案 0 :(得分:1)

这是一个有效的 Demo Fiddle

var seen = {};
var counter = {};
var length = $('#links1 a, #links2 a').length;              //Length of <a> elements
console.log(length);
$('#links1 a, #links2 a').each(function(i) {
    var txt = $(this).text();
    if(seen[txt]){
        $(this).remove();
        counter[txt]++;
    }
    else{
        seen[txt]=true;
        counter[txt] = 1; 
    }
    if(i==(length-1)){                                      //Last iteration

        $.each(counter , function(i, val) { 
            $('p#first').append('<p>'+i+': '+val+'</p>');   //Print Text and its Occurence.
        });


    }

});

您必须在最后一次迭代后打印所有值和索引。

答案 1 :(得分:0)

我建议你创建一个额外的Array来计算每个text

的重复项
counters = Array();

if (seen[txt]) {
    $(this).remove();
    count++;
    counters[txt]++; 
} else {
    seen[txt] = true;
    counters[txt] = 1;
}