filter()
使用所有通过给定测试的结果集元素创建一个新的 API 实例。
描述
filter()
方法提供了一种筛选 API 实例结果集中不通过已提供的回调方法设置的条件的内容。不要将此方法与 search()
混淆,后者用于在 DataTable 中搜索记录,也就是说,filter 方法不会改变在 DataTable 中显示的行。
在使用诸如 rows()
和 columns()
这类复数方法时,您可能希望使用 eq()
实用方法将 API 实例从二维数组减少到一维数组,可以使用此方法对其进行迭代。
此方法利用了 DataTables API 对象“类似数组”这一事实,它继承了很多 Javascript Array
类型的功能和方法。
在这种情况下,此方法是 Javascript Array.prototype.filter
方法的代理,并作为 DataTables API 的实用方法提供。有关原始方法的详细信息,请参阅 filter
的 Mozilla MDN 文档。在不支持本机 filter
的浏览器中,会提供一个 polyfill 以允许此 DataTables 方法按预期操作。
类型
函数 filter( fn )
- 描述
迭代 API 实例的结果集,测试每一项,根据通过的项创建一个新的实例。
- 参数
名称 类型 可选 1 fn
否 回调函数,对 API 实例结果集中的每一项调用。回调用三个参数调用
- 元素值
- 结果集中的元素索引
- 正在遍历的 API 实例
如果要将值包含在新实例自身的结果集中,则回调应返回
true
,否则返回 false。- 返回
使用回调中的测试通过的结果集中的值的新 API 实例。
示例
从一列中筛选数据,只保留大于 20 的数据
var table = new DataTable('#myTable');
var filteredData = table
.column(0)
.data()
.filter(function (value, index) {
return value > 20 ? true : false;
});
从多列中筛选数据,获取两列中单元格中大于 20 的数据点
var table = new DataTable('#myTable');
var filteredData = table
.columns([0, 1])
.data()
.flatten()
.filter(function (value, index) {
return value > 20 ? true : false;
});