首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >定制Intl.Collators?

定制Intl.Collators?
EN

Stack Overflow用户
提问于 2015-01-22 19:57:05
回答 1查看 1.3K关注 0票数 3

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

代码语言:javascript
运行
复制
var letters = [ "a", "n", "ñ", "x" ]

如果我对它们进行排序,默认情况下,ñ将结束:

代码语言:javascript
运行
复制
letters.sort() // [ "a", "n", "x", "ñ" ]

但是,使用新的Intl.Collator,我可以这样做:

代码语言:javascript
运行
复制
letters.sort(Intl.Collator('es').compare)

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

代码语言:javascript
运行
复制
[ "a", "n", "ñ", "x" ] 

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

代码语言:javascript
运行
复制
[ "ñ", "a", "n", "x" ] 

我还没有找到任何关于为Intl.Collator定制新规则集的信息。

这个是可能的吗?

更新

是的,这是可能的。

更新:

我在ECMAscript i18n标准2中找到了关于如何创建自定义区域设置的建议:

代码语言:javascript
运行
复制
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);
EN

回答 1

Stack Overflow用户

发布于 2015-01-22 20:24:15

通过使用“敏感性”选项,您可以得到想要的东西。

Intl.Collator.prototype不可写。

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

代码语言:javascript
运行
复制
$convert[character]= sortOrder ;

数组结构将取决于目的。

使用此结构,您必须再次将结果转换回来。

代码语言:javascript
运行
复制
$letters = [$convert[a],$convert[n],$convert[ñ],$convert[x]);

在大多数情况下,这个可能是最有效的。

代码语言:javascript
运行
复制
$letters = [[$convert[a],a],[$convert[n],n],[$convert[ñ],[ñ],[$convert[x],x]);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28097554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档