利用Intl.Collator对象(推荐)
const data = ['武汉', '上海', '北京', '天津', '安徽', '内蒙古']
const pinyinSort = (param1, param2) => {
return new Intl.Collator('zh-Hans-CN', { sensitivity: 'accent' }).compare(param1, param2);
}
const sortedData = data.sort(pinyinSort)
使用String.prototype.localeCompare方法(推荐)
const data = ['武汉', '上海', '北京', '天津', '安徽', '内蒙古']
const pinyinSort = (param1, param2) => {
return param1.localeCompare(param2, 'zh-Hans-CN', { sensitivity: 'accent' })
}
const sortedData = data.sort(pinyinSort)
借助第三方库pinyin排序
const data = ['武汉', '上海', '北京', '天津', '安徽', '内蒙古']
const pinyin = require('pinyin');
const pinyinSort = (param1, param2) => {
return pinyin(param1).join('') > pinyin(param2).join('') ? 1 : -1;
}
const sortedData = data.sort(pinyinSort)
使用Unicode范围进行汉字排序
const data = ['武汉', '上海', '北京', '天津', '安徽', '内蒙古']
const pinyinSort = (param1, param2) => {
return param1.charCodeAt(0) - param2.charCodeAt(0);
}
const sortedData = data.sort(pinyinSort)