我正在寻找一种最简单的方法来排序由数字和文本组成的数组,以及这些数组的组合.
例如
'123asd'
'19asd'
'12345asd'
'asd123'
'asd12'
Run Code Online (Sandbox Code Playgroud)
变成
'19asd'
'123asd'
'12345asd'
'asd12'
'asd123'
Run Code Online (Sandbox Code Playgroud)
这将与我在这里提出的另一个问题的解决方案结合使用.
排序函数本身就可以工作,我需要的是一个可以说'19asd'小于'123asd'的函数.
我是用JavaScript编写的.
编辑:正如adormitu指出的那样,我正在寻找的是一种自然分类的功能
通过切换javascript排序函数
myArray.sort(function (a, b) {
return a.name.localeCompare(b.name);
});
Run Code Online (Sandbox Code Playgroud)
至
myArray.sort(function (a, b) {
return (a.name < b.name ? -1 : (a.name > b.name ? 1 : 0));
});
Run Code Online (Sandbox Code Playgroud)
我能够缩短在Chrome中对~1700元素阵列进行排序的时间,从1993毫秒到5毫秒.几乎是400倍的加速.不幸的是,这是以正确排序非英语字符串为代价的.
当我尝试进行排序时,显然我无法阻止我的UI阻塞2秒.有什么我可以做的,以避免可怕的缓慢localeCompare但仍然保持对本地化字符串的支持?