相关疑难解决方法(0)

Javascript:自然的字母数字字符串

我正在寻找一种最简单的方法来排序由数字和文本组成的数组,以及这些数组的组合.

例如

'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 sorting natural-sort

140
推荐指数
6
解决办法
8万
查看次数

通过将a.localeCompare(b)切换为(a <b?-1:(a> b?1:0))进行400x排序加速

通过切换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但仍然保持对本地化字符串的支持?

javascript sorting google-chrome

36
推荐指数
3
解决办法
2万
查看次数

标签 统计

javascript ×2

sorting ×2

google-chrome ×1

natural-sort ×1