Datatables 列().data()具有正交数据而不是显示?

Datatables 列().data()具有正交数据而不是显示?,datatables,Datatables,我用它来获取列中所有值的数组。它在纯文本单元格上运行良好,但是从那些包含HTML的单元格中,我得到了完整的HTML。考虑下面的例子中的Office。 $(文档).ready(函数(){ 变量表=$(“#示例”).DataTable(); console.log(table.column(2.data().toArray()); } ); DataTables-JS-Bin 名称 位置 办公室 年龄 开始日期 薪水 老虎尼克松 系统架构师 爱丁堡 61 2011/04/25 $3,120 阿什

我用它来获取列中所有值的数组。它在纯文本单元格上运行良好,但是从那些包含HTML的单元格中,我得到了完整的HTML。考虑下面的例子中的Office。
$(文档).ready(函数(){
变量表=$(“#示例”).DataTable();
console.log(table.column(2.data().toArray());
} );

DataTables-JS-Bin
名称
位置
办公室
年龄
开始日期
薪水
老虎尼克松
系统架构师
爱丁堡
61
2011/04/25
$3,120
阿什顿考克斯
技术作者
旧金山
66
2009/01/12
$4,800

您当然可以使用
数据-*
自定义属性

但是,由于您希望显示的数据显示HTML格式,并且您可能不希望通过强制该列仅对国家/地区ID进行排序或筛选来干扰排序/筛选,因此我建议您避免使用

相反,您可以通过迭代DataTable节点来提取所需的数据:


名称
位置
在国内的办事处
年龄
开始日期
薪水
老虎尼克松
系统架构师
GB爱丁堡
61
2011/04/25
$320,800
阿什顿考克斯
初级“技术”作者
美国旧金山
66
2009/01/12
$86,000
var table=$('#示例').DataTable();
const countries=Array.from(
table.column(2).nodes(),
country=>country.getAttribute('data-country')
);
控制台日志(国家);
这里我使用
,然后使用DataTables API迭代表的节点,并将
数据国家
属性读入数组:

[ "US", "GB" ]

可能还有其他各种方法可以解决这个问题,但我认为这是明确和简洁的。

我最终得到的代码更为通用(因此不仅适用于国家,而且支持
innerText
),但它完全基于@andrewjames的答案,这是值得赞扬的地方

var values = Array.from(
    table.column(2).nodes(),
    function(cell) {
        // First, look for the dedicated attribute
        if (cell.hasAttribute('data-filter')) {
            return cell.getAttribute('data-filter');
        }
        // Otherwise, use the inner text of the table cell
        return cell.innerText;
    }
);

非常感谢,成功了!