You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Intl.Collator()与localeCompare()中的co参数具体有什么作用

co参数的核心作用

co是BCP 47语言标签内置的排序规则扩展标识,和Intl.Collator配置项里的collation属性完全等价,作用是指定同一语言/区域下的差异化排序规则,解决同一个语言在不同场景下排序逻辑不同的需求。
比如德语场景下co=phonebk对应电话本排序规则(会把特殊字符ä当作ae处理),中文场景下co=pinyin对应拼音排序、co=stroke对应笔画排序。


排序对象说明

co的作用对象是你实际要进行比较的字符串内容,而非locales参数里传入的语言标签。
比如你需要对一堆中文商品名称排序,co的取值只会影响这些商品名称的排序结果,不会改变语言标签本身的匹配逻辑。


和多语言标签优先级的关系

二者完全无关。
你传入多个语言标签时,JS引擎会按照数组的先后顺序依次匹配当前运行环境支持的区域设置,这个匹配逻辑不受co参数影响。co只会在匹配到对应的区域设置后,作用于该区域设置的排序规则。


举个实际使用的示例:

const testList = ['上海', '北京', '广州', '深圳']
// 按拼音排序
console.log(testList.sort(new Intl.Collator('zh-CN-u-co-pinyin').compare))
// 输出:['北京', '广州', '上海', '深圳']

// 按笔画排序
console.log(testList.sort(new Intl.Collator('zh-CN-u-co-stroke').compare))
// 输出:['上海', '广州', '北京', '深圳'] (按首字笔画数排序:上3画、广3画、北5画、深11画)

内容的提问来源于stack exchange,提问作者Ivan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 21:30:01