javascript - 如何根据特定区域设置对 JavaScript 中的字符串进行排序或比较?

标签 javascript locale string-comparison

我知道有一个函数叫 String.prototype.localeCompare您可以使用它,并且可以将区域设置列表作为第二个参数发送。

string.localeCompare(compareString [, locales [, options]])

但是如果你查看浏览器兼容性表,只有 Chrome 支持。

enter image description here

如何根据特定区域设置对 JavaScript 中的字符串进行排序或比较?

所有大型网站(例如 eBay 或亚马逊)是如何做到这一点的?他们必须在前端进行某种字符串排序..对吗?

最佳答案

也许您需要排序,而不是比较?

Javascript 数组 sort 方法按其 Unicode(非 ASCII)代码对字符串进行排序。您可以对字符串数组进行排序以按字母顺序排列。

['Собака', 'Кошка'].sort() 会将数组排序为 ["Кошка", "Собака"],这在 Ru_ru 语言环境中是正确的。

您可以添加比较功能,如下所示:

['Собака', 'Кошка', 'Свекла'].sort(function(a, b) { 
    return a[1] > b[1]?1:-1;
})

Javascript 将按 Unicode 逐个字符地比较字符串。在我的示例中,比较位于 native 低级代码的 a[1] > b[1] 内部。排序函数需要返回-1或1来替换数组元素。

关于javascript - 如何根据特定区域设置对 JavaScript 中的字符串进行排序或比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20091927/

相关文章:

java - Java 中 .equals() 函数的问题

javascript - 添加动态表单元素 jQuery

javascript - 当我的 HTTP 调用因 Internet 访问而失败时,有没有一种方法可以发出错误警报?

windows - 从“运行”对话框启动时,CMD 编码错误

python - 无法让 Django 本地化工作

javascript - 如何比较谷歌电子表格中单元格之间的字符串数据?

javascript - 如何为所有选项卡设置相同的背景图片? ( react native )

javascript - 如何实现jquery live()而不是each()

java - 如何获取系统语言?

c# - 查找在多个句子中重复出现的三个最常见单词数组的算法