Javascript 按值的日期部分对DataTables列进行自定义排序

Javascript 按值的日期部分对DataTables列进行自定义排序,javascript,jquery,sorting,datatables,Javascript,Jquery,Sorting,Datatables,我在代码中使用jQuery。 我的一个列具有如下值: AB 05-05-2019 CD 01-05-2019 EF 09-05-2019 单击此列的标题时,我希望它仅按日期排序,而不是按前缀('AB','CD','EF')排序。结果应该是: CD 01-05-2019 AB 05-05-2019 EF 09-05-2019 我尝试的是,只插入带有日期的隐藏列,当我使用前缀对列进行排序时,我使用JavaScript对隐藏列进行排序。 但是,使用jQuery DataTables的默认配置有什

我在代码中使用jQuery。
我的一个列具有如下值:

AB 05-05-2019
CD 01-05-2019
EF 09-05-2019
单击此列的标题时,我希望它仅按日期排序,而不是按前缀('AB','CD','EF')排序。结果应该是:

CD 01-05-2019
AB 05-05-2019
EF 09-05-2019 
我尝试的是,只插入带有日期的隐藏列,当我使用前缀对列进行排序时,我使用JavaScript对隐藏列进行排序。

但是,使用jQuery DataTables的默认配置有什么合适的方法吗?

假设您的值是“DD-MM-YYYY”格式的日期,前缀是两个字符和一个空格,您可以构建自己的小排序插件,具有如下自定义排序功能:

(first, second) => {
    const firstDate = new Date(first.substr(3).split('-').reverse().join('-'));
    const secondDate = new Date(second.substr(3).split('-').reverse().join('-'));
    return firstDate - secondDate;
};
因此,您的完整示例可能如下所示:

//源数据
常数srcData=[{
id:1,
价值:“AB 05-05-2019”
}, {
id:2,
价值:“CD 01-05-2019”
}, {
id:3,
价值:“EF 09-05-2019”
}
];
//数据表初始化
const dataTable=$(“#mytable”).dataTable({
dom:‘t’,
数据:srcData,
列:['id','value'].map(标题=>({
标题:标题,
数据:标题
})),
columnDefs:[{
类型:“prefixedDate”,
目标:1
}
]
});
//提取字符串的日期部分
const extractDate=str=>new Date(str.substr(3).split('-').reverse().join('-');
//自定义排序
Object.assign($.fn.DataTable.ext.oSort{
“prefixedDate asc”:(a,b)=>extractDate(a)-extractDate(b),
“prefixedDate desc”:(a,b)=>extractDate(b)-extractDate(a),
});

进展如何?你解决了这个问题还是还在寻找更好的答案?