Как отобразить количество удаленных дубликатов текста?

0

Я использую код для удаления дубликатов, как описано здесь: 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).

  • 0
    сделать скрипку для этого.
  • 0
    Какие результаты вы получаете?
Показать ещё 2 комментария
Теги:
count
duplicate-removal

2 ответа

1
Лучший ответ

Вот рабочий скрипт

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.
        });


    }

});

Вам просто нужно было распечатать все значения и индексы после последней итерации.

  • 0
    Да, это работает и распечатывает список отлично, но мне нужно иметь значение за ссылками, которые печатаются. «# links1 a» относится к ссылкам, и с оригинальным кодом он правильно печатает эти ссылки только один раз, и мне нужно это значение. Думаю, мы доберемся, спасибо за вашу помощь.
  • 0
    Что вы подразумеваете под отставанием? Можете привести пример?
Показать ещё 7 комментариев
0

Хорошо, я бы рекомендовал вам создать дополнительный Array который учитывает дубликаты для каждого text

counters = Array();

if (seen[txt]) {
    $(this).remove();
    count++;
    counters[txt]++; 
} else {
    seen[txt] = true;
    counters[txt] = 1;
}
  • 0
    Спасибо Тобиас, но с вашим кодом я все еще не вижу цифры в скобках. Я что-то пропустил? Спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню