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