一、前言
适用场景:
- 通讯录
- 名称排序
- 商品排序
- ...
二、中文排序
localeCompare()
方法,用给定语言环境比较两个字符串,默认使用当前语言环境比较。- 'zh' 表示主语言标记,代表中文。
- 'Hans' 是脚本子标记,表示简体汉字。
- 'CN' 是区域子标记,表示中国。
javascript
let nameList = [
{
name: "张三",
initial: "z",
},
{
name: "李四",
initial: "l",
},
{
name: "彭于晏",
initial: "p",
},
{
name: "我",
initial: "w",
},
]
// localeCompare()方法,用给定语言环境比较两个字符串,默认使用当前语言环境比较。
// 'zh' 表示主语言标记,代表中文。
// 'Hans' 是脚本子标记,表示简体汉字。
// 'CN' 是区域子标记,表示中国。
console.log(nameList);
nameList.sort((a, b) => a.initial.localeCompare(b.initial, "zh-Hans-CN"));
console.log(nameList); // [李》彭》我》张] 结果大概长这样。。。简单理解一下
三、英文排序
localeCompare()
方法,用给定语言环境比较两个字符串,默认使用当前语言环境比较。- 'en' 表示主语言标记,代表英文。
大小写同时存在时,小写优于大写
bash
let nameStr = 'gtrbAvrtbBahCfgoiew'
// 转数组
let nameList = nameStr.split('')
// en为英文,a与b的顺序是按照字母表的顺序来排序的,此处可扩展数组属性
nameList.sort((a, b) => a.localeCompare(b, 'en'))
console.log(nameList);
// ['a', 'A', 'b', 'b', 'B', 'C', 'e', 'f', 'g', 'g', 'h', 'i', 'o', 'r', 'r', 't', 't', 'v', 'w']
// 转字符串
console.log(nameList.join(''));
// aAbbBCefgghiorrttvw