是否可以为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]);
关于javascript - 自定义国际整理者?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28097554/