问题描述
我在表中有一个“姓名”列,其中包含一个人的全名(即名字+姓氏)。目标是先根据人的姓氏对列进行排序,然后是名字。我最初对 textsorter
函数的天真方法是
function (a,b){
const aSplit = a.split(' ');
const bSplit = b.split(' ');
const aReverse = aSplit[1] + aSplit[0];
const bReverse = bSplit[1] + bSplit[0];
return aReverse.localeCompare(bReverse);
}
不幸的是,我必须排序的一些名字中有多余的空格,可能在名字或姓氏字段中。所以我必须在我的排序中支持这一点。
我目前仅使用组合的名字+姓氏字符串进行显示和排序,但我可以访问单独的名称字符串以及预格式化的 lastname,firstname
版本。我想将其中任何一个附加到 <th>
标签作为数据属性或类似的东西,并使用它而不是实际值进行排序,但我不确定如何从内部访问这些属性textsorter
函数。
解决方法
也许试试这个 - 当你构建表格 HTML 时,将姓氏 + 名字添加到单元格的 data-text
属性中。 Tablesorter 将自动在单元格内的实际文本上使用该属性。请参阅 textAttribute
option 以允许更改该属性名称。