JS Intl.Collator

🌙
手机阅读
本文目录结构

Intl.Collator 是用于语言敏感字符串比较的 collators 构造函数。

function letterSort(lang, letters) {
  letters.sort(new Intl.Collator(lang).compare);
  return letters;
}

console.log(letterSort('de', ['a','z','ä']));
// expected output: Array ["a", "ä", "z"]

console.log(letterSort('sv', ['a','z','ä']));
// expected output: Array ["a", "z", "ä"]

语法

new Intl.Collator([locales[, options]])
Intl.Collator.call(this[, locales[, options]])

参数

locales

可选。缩写语言代码 (BCP 47 language tag, 例如:cmn-Hans-CN) 的字符串或者这些字符串组成的数组。关于参数 locales 的一般形式和解释请参见 Intl page. 下面的这些 Unicode 扩展键也是被允许的:

co

某些区域设置的变体归类。 可能的值包括:“big5han”,“dict”,“direct”,“ducet”,“gb2312”,“phonebk”,“phonetic”,“pinyin”,“reformed”,“searchjl”,“stroke” “,”unihan“。值“standard” 和 “search” 被忽略;它们被 options 属性用法替换(详见下文)。

kn

是否应使用数字对照,使得 “1”<“2”<“10”。 可能的值为 “true” 和 “false”。 此选项可以通过 options 属性或通过 Unicode 扩展 key 设置;如果两者都提供,options 属性优先。

kf

首先排序大写或者小写。可能的值为 “upper”,“lower” 或 “false”(使用区域设置的默认值)。 此选项可以通过 options 属性或通过 Unicode 扩展 key 设置;如果两者都提供,options 属性优先。

options

可选。包含一些或所有的下面属性的对象:

localeMatcher

使用的 local 的匹配算法。可能的值有 “lookup” 和 “best fit”; 默认值是 “best fit”. 有关此选项的信息,请参见 Intl page.

usage

比较是用于排序还是用于搜索匹配的字符串。 可能的值为 “sort” 和 “search”; 默认为 “sort”。

sensitivity

字符串中的哪些差异应导致结果值为非零 (non-zero)。 可能的值有:

  • “base”: 只有字母不同的字母比较不相等。例子:a ≠ b, a = á, a = A。
  • “accent”: 只有不同的基本字母或重音符号和其他变音符号的字符串比较为不相等。 例如:a ≠ b, a ≠ á, a = A。
  • “case”: 只有不同的基本字母或大小写的字符串比较不相等。 Examples: a ≠ b, a = á, a ≠ A。
  • “variant”: 字符串的字母,口音和其他变音符号、或不同大小写比较不相等。 也可以考虑其他差异。例如: a ≠ b, a ≠ á, a ≠ A.

“variant” 的默认值使用 “sort”; 它的 locale 依赖于使用 “search”.

ignore­Punctua­tion

是否应忽略标点。 可能的值为 true 和 false; 默认值为 false。

numeric

是否应使用数字对照,使得 “1”<“2”<“10”。 可能的值为 “true” 和 “false”。默认值为 “false” 。 此选项可以通过 options 属性或通过 Unicode 扩展 key 设置;如果两者都提供,options 属性优先。实现不需要支持此属性。

caseFirst

首先排序大写或者小写。可能的值为 “upper”,“lower” 或 “false”(使用区域设置的默认值)。 此选项可以通过 options 属性或通过 Unicode 扩展 key 设置;如果两者都提供,options 属性优先。实现不需要支持此属性。

描述

Intl.Collator 类有一下属性和方法

属性

Intl.Collator.prototype

允许向所有对象添加属性。

方法

Intl.Collator.supportedLocalesOf()

返回包含所支持的所提供语言环境的数组的数组,而不必回退到运行时的默认语言环境。

Collator 实例

属性

Collator 实例从其原型继承以下属性:

Intl.Collator.prototype.constructor A reference to Intl.Collator.

方法

Collator 实例从其原型继承以下方法:

Intl.Collator.prototype.compare

Getter function that compares two strings according to the sort order of this Intl.Collator object.

Intl.Collator.prototype.resolvedOptions()

Returns a new object with properties reflecting the locale and collation options computed during initialization of the object.

例子

基本用法

以下示例演示在另一个之前,之后或同级别发生的字符串的不同潜在结果:

console.log(new Intl.Collator().compare('a', 'c')); // → a negative value
console.log(new Intl.Collator().compare('c', 'a')); // → a positive value
console.log(new Intl.Collator().compare('a', 'a')); // → 0

请注意,上述代码中显示的结果可能会因浏览器和浏览器版本而异。 这是因为值是实现特定的。 也就是说,规范仅需要前后值为负和正。

使用 locales

Collator.prototype.compare() 提供的结果在不同语言之间有所不同。为了获得用于您的应用程序的用户界面的语言格式,请确保设定了语言(可能还有一些回退语言)参数:

// 德语中, ä 使用 a 的排序
console.log(new Intl.Collator('de').compare('ä', 'z'));
// → 一个负值

// 瑞典语中, ä 在 z 的后面
console.log(new Intl.Collator('sv').compare('ä', 'z'));
// → 一个正值

使用 options

Collator.prototype.compare() 提供的结果可以使用 options 参数自定义:

// 德语中, ä 使用 a 作为基本字母
console.log(new Intl.Collator('de', { sensitivity: 'base' }).compare('ä', 'a'));
// → 0

// 瑞典语中, ä 和 a 是单独的基本字母
console.log(new Intl.Collator('sv', { sensitivity: 'base' }).compare('ä', 'a'));
// → 一个正值

规范

Specification Status Comment
ECMAScript Internationalization API 1.0 (ECMA-402)
Intl.Collator
Standard Initial definition.
ECMAScript Internationalization API 2.0 (ECMA-402)
Intl.Collator
Standard
ECMAScript Internationalization API 4.0 (ECMA-402)
Intl.Collator
Draft

AXIHE / 精选资源

浏览全部教程

面试题

学习网站

前端培训
自己甄别

前端书籍

关于朱安邦

我叫 朱安邦,阿西河的站长,在杭州。

以前是一名平面设计师,后来开始接接触前端开发,主要研究前端技术中的JS方向。

业余时间我喜欢分享和交流自己的技术,欢迎大家关注我的 Bilibili

关注我: Github / 知乎

于2021年离开前端领域,目前重心放在研究区块链上面了

我叫朱安邦,阿西河的站长

目前在杭州从事区块链周边的开发工作,机械专业,以前从事平面设计工作。

2014年底脱产在老家自学6个月的前端技术,自学期间几乎从未出过家门,最终找到了满意的前端工作。更多>

于2021年离开前端领域,目前从事区块链方面工作了