【问题标题】:localeCompare() platform supportlocaleCompare() 平台支持
【发布时间】:2016-10-18 13:00:19
【问题描述】:

我想在 javascript 中对一组法语、德语、波兰语、中文等单词进行排序。

因此,我使用此处所述的 localeCompare() 方法:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/localeCompare

在这支笔中你可以看到法语例子:http://codepen.io/anon/pen/wWWYoy?editors=1111

左边是它应该是的顺序 - 右边是浏览器生成的顺序。

德语字母的相同示例:http://codepen.io/anon/pen/ezzPWa

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

我只是使用没有语言环境或选项参数的 localeCompare,因为很少有浏览器支持它们 (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/localeCompare)

但是,developers.mozilla.org 上写着:

Android - 基本支持(是)

即使在 Android 4.0.4 上使用 Android 浏览器排序完全错误。 Android 4.0.4 上的 Chrome 排序正确。

我的代码中是否有任何错误,或者任何解释 Stock Android 浏览器为什么排序错误的原因?

【问题讨论】:

  • MDN 并不完美。它也是一个 wiki,因此您可以为发现问题的实现添加注释。

标签: javascript android sorting locale


【解决方案1】:

如果您没有指定选项,普通的 Android 浏览器会显示正确的行为。这是应该处理重音折叠的选项。

a.localeCompare( b, 'fr', { sensitivity: 'base' } );

如果您需要在较旧的浏览器上支持重音折叠,您需要自行开发。 https://alistapart.com/article/accent-folding-for-auto-complete

【讨论】:

    猜你喜欢
    • 2017-06-05
    • 2010-09-07
    • 1970-01-01
    • 2018-08-27
    • 2010-09-11
    • 2018-12-25
    • 2018-11-18
    • 2013-11-27
    相关资源
    最近更新 更多