如何对具有软件版本号的表中的列进行排序?

本地主机

我的表中有一列是动态生成的。表格中包含名称,公司等列,还包含版本号(1.14.0.2、1.12.1.0、1.8.0.1)。

我正在使用称为Sortable的进行就地排序。这是个很棒的图书馆,开箱即用!

它适用于“名称”和“公司”等列。但是在某些情况下,版本号失败。我正在将数据值设置为

str_replace('.','',$version_number)

但是,当版本号为1.10.0、1.14、1.0.1.2(特殊情况)时,它将失败

它应该像

1.0.1.2
1.10.0
1.14

但是有点像

1.14
1.0.1.2
1.10.0

我能以任何方式取得正确的结果吗?

本·斯温伯恩

之所以这样排序,是因为它按数据值排序,您将其设置为不带句点的数字。

1.14      --> 114  (smallest)
1.0.1.2   --> 1012
1.10.0    --> 1100 (largest)

如果您data-value不存在属性,或者在版本号中保留句点,则它将正确排序。如下面的小提琴所示。

https://jsfiddle.net/t7xhkkjc/

编辑

您需要添加自定义排序功能以正确地对版本号进行排序

// Credit for function http://stackoverflow.com/a/7717160/769237
var customTypes = [{
  name: 'version',
  defaultSortDirection: 'descending',
  match: function(a) {
    return a.match(/([1-9]+\.?)+/g);
  },
  compare: function (a, b) {
    var i, cmp, len, re = /(\.0)+[^\.]*$/;
    a = (a + '').replace(re, '').split('.');
    b = (b + '').replace(re, '').split('.');
    len = Math.min(a.length, b.length);
    for( i = 0; i < len; i++ ) {
      cmp = parseInt(a[i], 10) - parseInt(b[i], 10);
      if( cmp !== 0 ) {
        return cmp;
      }
    }
    return a.length - b.length;
  }
}];

这样您就不会通过覆盖原始排序类型而丢失它们

var customAndOriginalTypes = Sortable.types.concat(customTypes);

Sortable.setupTypes(customAndOriginalTypes);

另外,您需要通过data-sortable从表中删除来禁用自动初始化这使您可以在将排序功能添加到表之前添加新的排序类型。

然后,您可以使用

var yourTable = document.querySelector('#your-table');

Sortable.initTable(yourTable);

https://jsfiddle.net/p4w5bup3/

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

熊猫如何对具有列之一作为版本号的数据框进行排序?

比较PowerShell中的软件版本号

如何根据版本号列对google-sheet表进行排序

如何在Ansible中对复杂的版本号进行排序

PHP函数增加经典软件版本号?

ServiceStack缓存以包含对象/软件版本号

如何使用js比较软件版本号?(仅数字)

如何使用JFrog CLI按版本号对Artifactory软件包搜索结果进行排序?

中央存储库如何对版本号进行排序?

在Powershell中按版本号对文件进行排序

Oracle SQL对版本号进行排序

根据版本号排序表

如何具有自动递增的版本号(Visual Studio)?

如何在注册表中获取版本号并使用批处理文件安装新软件?

NuGet-禁止覆盖软件包(具有相同的名称和版本号)

对包含代表熊猫软件版本的字符串的列进行排序

按特定顺序对带有浮点值的查询集进行排序(例如软件版本)

对点分隔的数字列表进行排序,例如软件版本

Angular:按字母顺序对软件版本进行排序

如何比较Python中的版本号?

如何对list <string> /字符串版本号数组进行排序?

无法在 JavaScript 中按版本号对对象数组进行排序

如何使用WiX Pyro将已更改但具有相同版本号的文件包含到MSP中?

如何列出所有Flutter软件包和版本号

如何在Windows 7中根据小于特定值的版本号卸载软件?

如何从数据库的版本表中获取最大版本号?

我有一个 apache 软件版本的文件记录,需要根据版本对它们进行排序

如何为具有不同cpu架构的相同apk文件创建不同的版本号

具有版本号可变的Maven模块