0

我想删除列的重复单元格。

<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           

​</p>

4

3 回答 3

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在右栏中)

于 2012-11-22T10:52:15.660 回答
1

你可以试试这样的

现场演示

arr = [];
$('#test td').each(function(){
    key = "" + $(this).index() + $.trim($(this).text());
       if(arr.indexOf( key ) == -1)
           arr.push(key );
       else
           $(this).text('')    
});​
于 2012-11-22T10:36:59.420 回答
1

您可以在此处使用此模式。

jsFiddle在这里

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('&nbsp;');
        }
        else {
            seen[index][txt] = true;
        }
    });
});​

请注意,您的</td>元素没有正确关闭,并且根据 ahren 的评论,删除 tdentirely可能会导致对齐问题。

于 2012-11-22T10:37:21.463 回答