use*_*457 5 javascript sorting localization internationalization
我知道您可以使用方法' localeCompare '来排序具有您自己的本地化的数组,如下所示:
aArray.sort(function(a,b){return a.localeCompare(b)});
Run Code Online (Sandbox Code Playgroud)
但是,我认为瑞典网站的大多数(几乎所有)访问者都了解瑞典语,因此无论他/她目前使用哪种" 语言环境 ",他们都会期待瑞典语排序.
(我认为现在有些人会想要争论这个假设,但我真的认为会有更多的人理解瑞典语,但目前使用的是其他语言环境而不是那些不了解瑞典语字母的人我希望"å"和"ä"的排序等同于"a"和"ö"等同于"o".我真的希望最后三个瑞典字母"åäö" 始终按顺序排序,无论如何浏览器或操作系统,无论它是什么定义了" localeCompare " 方法使用的"语言环境"
一种解决方案可能是以编程方式强制执行"localeCompare"方法时使用的"语言环境",但据我所知,这是不可能的.(虽然如果它确实可行,那么你如何改变语言环境?)
这个排序问题应该对所有瑞典javascript程序员来说都相当普遍,但我仍然无法找到任何开源库,其中包含瑞典字符串比较方法的实现.有没有人知道这样的库(与sort方法一起使用时性能良好)重用而不是自己尝试实现它?
@Richard Marr(评论Is there any javascript library with实现了字母表的排序方法,例如瑞典语?)
\n\n好吧,我不确定这会很困难,但对我来说,要使其像使用 javascript 那样高效可能并不容易。\n这感觉就像试图重新发明轮子,擅长 javascript 的人可能已经已经比我做得更好了。\n考虑到有多少开源库可以用于任何事情,我会有点惊讶地意识到这个东西还不存在。
\n\n关于您的代码片段
\n\n\'sort(function(a,b){ return position[a] - position[b]; })\' \nRun Code Online (Sandbox Code Playgroud)\n\n在我看来,您期望 a 和 b 是字符。\n例如,我认为您想到的是以下类型的结构:
\n\nvar position = {\n// e.g. essentially the codes here: http://en.wikipedia.org/wiki/Multinational_Character_Set\n\'A\': 65,\n\'B\': 66,\n//...\n// the three swedish characters:\n//\'\xc3\x84\': 196, \n//\'\xc3\x85: 197,\n//\'\xc3\x96\': 214,\n// The above are the correct values according to the codes, but the relative ordering of \xc3\x85 and \xc3\x84 is not correct for swedish so therefore I switch the values below:\n\'\xc3\x85\': 196, \n\'\xc3\x84\': 197,\n\'\xc3\x96\': 214\n};\nRun Code Online (Sandbox Code Playgroud)\n\n事实上,可以使用这样的位置结构,但由于排序方法的函数参数接收两个任意字符串而不是只有一个字符的字符串,那么我想必须迭代两个字符串中的每个字符(直到第一个差异)并且与位置结构相比。\n我希望有一种更好(更有效)的方法来做到这一点......
\n| 归档时间: |
|
| 查看次数: |
1891 次 |
| 最近记录: |