繁体   English   中英

是否有任何javascript库与字母表的排序方法的实现,如瑞典语?

[英]Is there any javascript library with implementations of sort methods for alphabets such as swedish?

我知道您可以使用方法' localeCompare '来排序具有您自己的本地化的数组,如下所示:

aArray.sort(function(a,b){return a.localeCompare(b)});

但是,我认为瑞典网站的大多数(几乎所有)访问者都了解瑞典语,因此无论他/她目前使用哪种“ 语言环境 ”,他们都会期待瑞典语排序。

(我认为现在有些人会想要争论这个假设,但我真的认为会有更多的人理解瑞典语,但目前使用的是其他语言环境而不是那些不了解瑞典语字母的人我希望“å”和“ä”的排序等同于“a”和“ö”等同于“o”。我真的希望最后三个瑞典字母“åäö” 始终按顺序排序, 无论如何浏览器或操作系统,无论它是什么定义了“ localeCompare ”方法使用的“语言环境”

一种解决方案可能是以编程方式强制执行“localeCompare”方法时使用的“语言环境”,但据我所知,这是不可能的。 (虽然如果它确实可行,那么你如何改变语言环境?)

这个排序问题应该对所有瑞典javascript程序员来说都相当普遍,但我仍然无法找到任何开源库,其中包含瑞典字符串比较方法的实现。 有没有人知道这样的库(与sort方法一起使用时性能良好)重用而不是自己尝试实现它?

JavaScript Internationalization API提供您所需要的。 第I页引用了一些用法示例。 不幸的是,浏览器还没有广泛支持它。

@Richard Marr(评论是否有任何javascript库,包括瑞典等字母表的排序方法实现?

好吧,我不确定这会非常困难,但对我来说可能不是很容易使它像你可能用javascript一样高效。 感觉就像试图重新发明轮子一样,擅长javascript的人可能已经做得比我做得更好。 考虑到几乎任何事物都存在多少个开源库,我会有点惊讶地发现这个东西还不存在。

关于你的代码片段

'sort(function(a,b){ return position[a] - position[b]; })' 

在我看来,你期望a和b成为角色。 例如,我认为以下类型的结构是您的想法:

var position = {
// e.g. essentially the codes here: http://en.wikipedia.org/wiki/Multinational_Character_Set
'A': 65,
'B': 66,
//...
// the three swedish characters:
//'Ä': 196, 
//'Å: 197,
//'Ö': 214,
// The above are the correct values according to the codes, but the relative ordering of Å and Ä is not correct for swedish so therefore I switch the values below:
'Å': 196, 
'Ä': 197,
'Ö': 214
};

确实可以使用这样的位置结构,但由于sort方法的函数参数接收两个任意字符串而不是只有一个字符的字符串,所以我猜两个字符串中的每个字符(直到第一个差异)都必须迭代并且与职位结构相比。 我希望有一种更好(更有效)的方式来做到这一点......

@Pawel Dyda(评论是否有任何javascript库,包括瑞典语等字母表的排序方法实现?

不,不仅仅是JS,但我找到了jQuery tablesorter,我认为这是一个很好的,但是当我找到以下代码时遇到了排序问题:

$('table').tablesorter({ 
  textSorter: function(a,b) { 
    return a.localeCompare(b); 
  } 
});

(在http://mottie.github.com/tablesorter/docs/页面的“sortLocaleCompare”中记录)

事实上,我打算在服务器上实现排序,也支持使用禁用javascript的客户端,但对于使用javascript的客户,我认为我可以使用tablesorter而无需再次请求Web服务器获取相同的结果集(但排序方式不同) )。 至少为结果集实现它非常简单,不需要分页,即当所有行都适合一个页面时,你可以为jQuery tablesorter生成“ serverSideSorting:false ”,然后它会自动在Web中对它进行排序浏览器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM