自定义国际整理器



是否可以为 Javascript 创建自定义Intl.Collator对象?假设我有:

var letters = [ "a", "n", "ñ", "x" ]

如果我对它们进行排序,默认情况下ñ将排在最后:

letters.sort() // [ "a", "n", "x", "ñ" ]

但是,使用新Intl.Collator,我可以执行以下操作:

letters.sort(Intl.Collator('es').compare)

按西班牙语(es)规则排序,并将ñ放在n之后。

[ "a", "n", "ñ", "x" ] 

现在,假设出于某种原因我想写一篇自己的Collator,那会把ñ放在第一位吗?

[ "ñ", "a", "n", "x" ] 

我找不到有关为Intl.Collator自定义新规则集的任何信息。

这可能吗?

更新

是的,这是可能的。

更新:

我在 ECMAscript i18n 标准2中找到了有关如何创建自定义语言环境的建议:

function MyCollator​(locales, options) {
  Intl​.Collator​.call​(this, locales, options);
  // initialize MyCollator properties
}
MyCollator​.prototype = Object​.create​(Intl​.Collator​.prototype);
MyCollator​.prototype​.constructor = MyCollator;
// add methods to MyCollator​.prototype
var collator = new MyCollator​("de-u-co-phonebk");
a​.sort​(collator​.compare);

您可以使用"灵敏度"选项获得所需的内容。

Intl.Collator.prototype不可写。

您可以使用排序和字符创建和数组,以设置自己的排序顺序。

$convert[character]= sortOrder ;

数组结构将取决于目的。
使用此结构,您必须再次转换结果。

$letters = [$convert[a],$convert[n],$convert[ñ],$convert[x]);

在大多数情况下,这可能效果最好。

$letters = [[$convert[a],a],[$convert[n],n],[$convert[ñ],[ñ],[$convert[x],x]);

相关内容

  • 没有找到相关文章

最新更新