Javascript DataTables删除/隐藏列中包含重复信息的行

Javascript DataTables删除/隐藏列中包含重复信息的行,javascript,jquery,datatable,duplicates,Javascript,Jquery,Datatable,Duplicates,我有一个带有网页名称的数据表: |ID|Page |Domain | ---------------------------- |1 |test.com/page1|test.com| |2 |test.com/page2|test.com| |3 |xyz.net/page1 |xyz.net | |4 |xyz.net/page2 |xyz.net | 我要做的是隐藏(而不是分组)具有重复域的行,并仅显示每个域的第一个结果: |ID|Page |Dom

我有一个带有网页名称的数据表:

|ID|Page          |Domain  |
----------------------------
|1 |test.com/page1|test.com|
|2 |test.com/page2|test.com|
|3 |xyz.net/page1 |xyz.net |
|4 |xyz.net/page2 |xyz.net |
我要做的是隐藏(而不是分组)具有重复域的行,并仅显示每个域的第一个结果:

|ID|Page          |Domain  |
----------------------------
|1 |test.com/page1|test.com|
|3 |xyz.net/page1 |xyz.net |
我知道该怎么做,但我不知道我该怎么做上面的事


我是否必须使用助手映射/数组编写自己的代码,在其中存储我已经显示的域?或者有没有更聪明的方法在数据表中实现这一点?

是的。我认为最简单的方法是首先找到要排除的重复项,然后使用自定义过滤器仅显示未排除的行

循环遍历所有行,将已存在域的行标记为“已排除”:

然后设置一个简单的自定义筛选器,仅使未标记为“排除”的行可见:

$.fn.dataTable.ext.search.push(function(settings, data, dataIndex) {
   return table.row(dataIndex).nodes().to$().attr('excluded') != 'true'
})
我们总是可以返回显示所有行

$.fn.dataTable.ext.search.pop()
table.draw()
演示->使用JavaScript字典

  var dictionary  = {};
                table = document.getElementById("YourTableID");
                tr = table.getElementsByTagName("tr");
                for (i = 0; i < tr.length; i++) {             
                    td = tr[i].getElementsByTagName("td")[0]; // `index for filter`        
                    if (dictionary[td.textContent]) {
                        tr[i].style.display = "none";
                    } else {
                        seen[td.textContent] = true;
                    }
                }
var字典={};
table=document.getElementById(“YourTableID”);
tr=table.getElementsByTagName(“tr”);
对于(i=0;i
非常感谢David提供的宝贵建议和示例
  var dictionary  = {};
                table = document.getElementById("YourTableID");
                tr = table.getElementsByTagName("tr");
                for (i = 0; i < tr.length; i++) {             
                    td = tr[i].getElementsByTagName("td")[0]; // `index for filter`        
                    if (dictionary[td.textContent]) {
                        tr[i].style.display = "none";
                    } else {
                        seen[td.textContent] = true;
                    }
                }