Javascript中稳定/中立/不区分区域性的语言环境?
我希望在Javascript中有一个稳定的、定义良好的排序顺序 它可以是任何定义的语言环境,但关键是让代码说 “这里使用的只是一些中性排序顺序” Java和C#有各自的和 我们已被用于这一目的 至少现在看来没有 提供这样的选项。我的答案是使用Javascript中稳定/中立/不区分区域性的语言环境?,javascript,locale,Javascript,Locale,我希望在Javascript中有一个稳定的、定义良好的排序顺序 它可以是任何定义的语言环境,但关键是让代码说 “这里使用的只是一些中性排序顺序” Java和C#有各自的和 我们已被用于这一目的 至少现在看来没有 提供这样的选项。我的答案是使用“en”和 根据我下面的测试,en产生最一致的结果 下面是一个将其与localeCompare一起使用的示例: "å".localeCompare("ä", "en") 据我所知,und(未确定的缩写) (也许en-US-u-va-posix)应该是对原始
“en”
和
根据我下面的测试,en
产生最一致的结果
下面是一个将其与localeCompare
一起使用的示例:
"å".localeCompare("ä", "en")
据我所知,und
(未确定的缩写)
(也许en-US-u-va-posix
)应该是对原始问题的更好答案,但是und
在不同的情况下表现不同
Firefox(NodeJS中en-US-u-va-posix的行为取决于ICU数据的存在)
也许如果你没有碰到火狐问题,考虑一下
使用
und
或仅使用无参数形式传达
区域设置并不重要的想法
我在研究这一点时学到了一些相关的东西(在这里添加它们,以防其他人也进入同一个兔子洞):
- 有很多有用的评论
- 从中我了解到有一些“特殊”的地区
- 使用较旧的浏览器可能没有希望。引用Mozilla文档:“在忽略区域设置和选项参数的旧实现中,使用的区域设置和排序顺序完全依赖于实现。”
- NodeJS似乎使用了与区域设置相关的功能
- icu项目在网上有这个
- 普通排序()与其他选项不同,但在我测试的平台上似乎是稳定的
- 字符正如@Bergi在上面指出的,在许多情况下,您可以在字符串上使用
a
(在这种简单的情况下,.sort()
当然是等效的和更简单的。)当你说排序顺序时,如何使用localeCompare对区域设置进行排序?@IngoBürk是的。我正在尝试使用localeCompare。我注意到还有其他的选择可以设定中立的标准是不要使用一些地方。你认为“中立”是什么?只需使用标准字符串比较,这是定义良好且不区分区域性的。@Bergi谢谢。我就是这个意思。我不知道/不记得
["foo", "bar"].sort((a, b)=> a < b ? -1 : 1)