gpt4 book ai didi

javascript - 自定义 Intl.Collat​​ors?

转载 作者:行者123 更新时间:2023-11-29 15:36:25 24 4
gpt4 key购买 nike

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

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

如果我对它们进行排序,ñ 默认会排到最后:

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

但是,使用新的 Intl.Collat​​or,我可以:

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

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

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

现在,假设出于某种原因我想编写一个我自己的 Collat​​or,将 ñ 放在第一位?

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

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

这可能吗?

更新

是的,这是可能的。

更新:

我在 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.Collat​​or.prototype 不可写。

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

$convert[character]= sortOrder ;

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

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

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

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

关于javascript - 自定义 Intl.Collat​​ors?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28097554/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com