我需要按字母顺序对JS字符串进行排序。在英语中,排序非常简单:
sortArr.sort( function ( a , b ) {
return a > b ? 1 : -1;
} );
然而,我正在处理的应用程序将被翻译为i.a.阿拉伯语,中文,德语,俄语和其他一些。我可以看到,即使对于非ASCII字符,结果似乎也不对。
我根据文档找到了Intl.Collator().compare
:
Intl.Collator对象是collators的构造函数,这些对象支持语言敏感的字符串比较。
但是,Safari和大多数移动浏览器都不支持它。
我可以使用其他任何解决方案吗?
修改
有String.prototype.localeCompare()
但浏览器支持也不够好。
答案 0 :(得分:2)
截至2020年,大多数现代浏览器现在都支持Intl.Collator
。甚至IE11也支持其某些功能(尽管不是全部)。 Intl.Collator几乎可以用您能想到的任何一种语言进行排序(肯定比我能想到的还要多),并且具有用于根据重音符号,大写字母等自定义排序的众多选项。
请参阅以下Mozilla文档: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Collator/Collator#Browser_compatibility
这个人给了一个很好的使用方法的教程。 https://dev.to/aumayeung/comparing-non-english-strings-with-javascript-collators-57bf
答案 1 :(得分:1)
简短回答是否。
每种语言都有自己的字母顺序。例如
俄语的字母'с'与土耳其语的顺序不同。
您唯一的选择是尽可能使用Collator(支持它的浏览器)。 Afaik没有任何其他可用于实现此目的的现成库或对象。