Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jquery表排序器-自然排序顺序?_Javascript_Jquery_Tablesorter - Fatal编程技术网

Javascript jquery表排序器-自然排序顺序?

Javascript jquery表排序器-自然排序顺序?,javascript,jquery,tablesorter,Javascript,Jquery,Tablesorter,我已经查看了tablesorter列出的所有答案,但找不到我要查找的内容 我有一个表,我正在尝试排序,其中一列包含产品型号,包括字母和数字,问题是它按字母顺序排序,但没有按正确的顺序排列。例如,排序列的结果如下所示: STRB 18, STRB 19, STRB 2, STRB 20, STRB 23-你明白了 我想我需要这个专栏按自然顺序排序,但我没有任何js排骨来做这件事。如果有人能给我指出正确的方向,我将非常感激 我不确定你所说的“自然”顺序是什么意思,但我猜你的意思是strb 2将在st

我已经查看了tablesorter列出的所有答案,但找不到我要查找的内容

我有一个表,我正在尝试排序,其中一列包含产品型号,包括字母和数字,问题是它按字母顺序排序,但没有按正确的顺序排列。例如,排序列的结果如下所示:

STRB 18, STRB 19, STRB 2, STRB 20, STRB 23-你明白了

我想我需要这个专栏按自然顺序排序,但我没有任何js排骨来做这件事。如果有人能给我指出正确的方向,我将非常感激

我不确定你所说的“自然”顺序是什么意思,但我猜你的意思是strb 2将在strb 18之前

上面的顺序对于字符串是正确的。如果您想按数字部分排序(假设所有strb都是相同的),则必须执行子字符串以仅获取数字,然后对数据进行排序


我也不会在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,我看到了,但不知道怎么做,你会从我上面的评论中看到,我用另一种方式解决了这个问题。非常感谢你的帮助。