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

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

|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 |

我知道如何hide rows based on their value,但是我不知道该怎么做.

我是否必须使用帮助程序映射/数组编写自己的代码,在其中存储已经显示的域?还是有更聪明的方法在数据表中执行此操作?

解决方法:

是.我相信最简单的方法是首先找到我们要排除的重复项,然后使用自定义过滤器仅显示那些未排除的行.

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

var domain, domains = []
table.rows().every(function(rowIdx, tableLoop, rowLoop) {
  domain = this.data().domain;
  if (~domains.indexOf(domain)) {
    this.nodes().to$().attr('excluded', 'true')
  } else {
    domains.push(domain) 
  }
})

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

$.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()

演示-> http://jsfiddle.net/w75pdyf9/

上一篇:JavaScript-数据表清除输入过滤器


下一篇:CodeGo.net>数据表选择:表达与空间问题