Intl.Collator 实现多语言字符串排序
Intl.Collator 如何解决字符串排序问题?为什么直接用 Array.sort() 比较中文会出错?sensitivity 参数(accent/case/base/variant)的含义是什么?
回答
专业代码师
new Intl.Collator('zh-CN', {sensitivity:'accent', numeric:true, caseFirst:'upper'}).compare(a, b) 返回 -1/0/1。sort() 按 Unicode 码点排序,中文排序混乱。sensitivity: base(基本字符)、accent(区分重音)、case(区分大小写)、variant(全区分)。numeric:true 使 '2'<'10'。usage:'search' 用于搜索。中文按拼音 locale='zh-CN-u-co-pinyin',按笔画 'zh-CN-u-co-stroke'。Collator 实例可复用提升性能。