我想删除列的重复单元格。
<table id="test" border="1">
<tr>
<td>test1<td>
<td>test2<td>
<td>test3<td>
</tr>
<tr>
<td>test4<td>
<td>test2<td>
<td>test5<td>
</tr>
<tr>
<td>test6<td>
<td>test2<td>
<td>test5<td>
</tr>
<tr>
<td>test6<td>
<td>test8<td>
<td>test9<td>
</tr>
</table>
output
------
test1 test2 test3
test4 test2 test5
test6 test2 test9
test6 test8 test9
I want in this format
---------------------
test1 test2 test3
test4 test5
test6 test9
test8
答案 0 :(得分:3)
这仅删除列之间的重复文本。它的工作原理是因为按文档顺序选择了元素:
var seen = {};
$('#test td').each(function() {
// Encode column and content information.
var key = $(this).index() + $(this).text();
if (seen[key]) {
$(this).text('');
}
else {
seen[key] = true;
}
});
如果您的单元格跨越多列,则可能无效。
略微调整DEMO。
更新:仅适用于连续的小区。我们的想法是跟踪在一列中看到的先前值。
var seen = {};
$('#test td').each(function() {
var index = $(this).index();
var txt = $(this).text();
if (seen[index] === txt) {
$(this).text('');
}
else {
seen[index] = txt;
}
});
DEMO(请注意右列中的test5
)
答案 1 :(得分:1)
您可以尝试这样的事情,
<强> Live Demo 强>
arr = [];
$('#test td').each(function(){
key = "" + $(this).index() + $.trim($(this).text());
if(arr.indexOf( key ) == -1)
arr.push(key );
else
$(this).text('')
});
答案 2 :(得分:1)
您可以使用此模式here。
jsFiddle here。
var seen = {};
$('#removeDupes').on('click', function(){
$('#test tr td').each(function() {
var txt = $(this).text();
var index = $(this).parent('tr').children('td').index(this);
if (!seen[index]){
seen[index] = new Array();
}
if (seen[index][txt]) {
$(this).html(' ');
}
else {
seen[index][txt] = true;
}
});
});
请注意,您的</td>
元素未正确关闭,根据ahren的评论,删除td entirely
可能会导致对齐问题。