Javascript jquery表排序器-自然排序顺序?
我已经查看了tablesorter列出的所有答案,但找不到我要查找的内容 我有一个表,我正在尝试排序,其中一列包含产品型号,包括字母和数字,问题是它按字母顺序排序,但没有按正确的顺序排列。例如,排序列的结果如下所示: STRB 18, STRB 19, STRB 2, STRB 20, STRB 23-你明白了 我想我需要这个专栏按自然顺序排序,但我没有任何js排骨来做这件事。如果有人能给我指出正确的方向,我将非常感激 我不确定你所说的“自然”顺序是什么意思,但我猜你的意思是strb 2将在strb 18之前 上面的顺序对于字符串是正确的。如果您想按数字部分排序(假设所有strb都是相同的),则必须执行子字符串以仅获取数字,然后对数据进行排序Javascript jquery表排序器-自然排序顺序?,javascript,jquery,tablesorter,Javascript,Jquery,Tablesorter,我已经查看了tablesorter列出的所有答案,但找不到我要查找的内容 我有一个表,我正在尝试排序,其中一列包含产品型号,包括字母和数字,问题是它按字母顺序排序,但没有按正确的顺序排列。例如,排序列的结果如下所示: STRB 18, STRB 19, STRB 2, STRB 20, STRB 23-你明白了 我想我需要这个专栏按自然顺序排序,但我没有任何js排骨来做这件事。如果有人能给我指出正确的方向,我将非常感激 我不确定你所说的“自然”顺序是什么意思,但我猜你的意思是strb 2将在st
我也不会在javascript中这样做。让数据库为您工作,并让它处理数据的顺序。这会帮你省去很多痛苦。摘自我的一些旧代码
compare = {
natural: function(a, b) {
function prepare(s) {
var q = [];
s.replace(/(\D)|(\d+)/g, function($0, $1, $2) {
q.push($1 ? 1 : 2);
q.push($1 ? $1.charCodeAt(0) : Number($2) + 1)
});
q.push(0);
return q;
}
var aa = prepare(a), bb = prepare(b), i = 0;
do {
if(aa[i] != bb[i])
return aa[i] - bb[i];
} while(aa[i++] > 0);
return 0;
}
}
使用示例
test = ['img100b', 'img21', 'img18', 'img100a', 'img1', 'img2']
console.log(test.sort(compare.natural))
jquery tablesorter插件提供了编写自己的解析器的能力 看看这个例子,试一试
据我所见,这被称为“字典排序”。我想补充一点,我在github fork的插件中添加了字母数字排序,以防您仍然感兴趣。非常感谢Limey的回复,实际上,我更喜欢用php来做这件事——这个表实际上会显示在WordPress网站上——有什么关于如何做的提示吗?为什么不让db来做呢?如果你等到你的php代码,你只是增加了额外的处理时间,因为你的DB将能够比定制的php作业更快地排序。这就是我在wordpress中找到“自然排序”术语的地方——结束查询的帖子拯救了我,根本不需要使用js。当我在wordpress中使用query_帖子时,我正准备尝试一下,谢谢你的努力,非常感谢!!谢谢Dan,我看到了,但不知道怎么做,你会从我上面的评论中看到,我用另一种方式解决了这个问题。非常感谢你的帮助。