如何实现拼音排序

94 阅读1分钟

利用Intl.Collator对象(推荐)

const data = ['武汉', '上海', '北京', '天津', '安徽', '内蒙古']
// 利用Intl.Collator对象
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 = ['武汉', '上海', '北京', '天津', '安徽', '内蒙古']
// 使用String.prototype.localeCompare方法
const pinyinSort = (param1, param2) => {
  return param1.localeCompare(param2, 'zh-Hans-CN', { sensitivity: 'accent' })
}
const sortedData = data.sort(pinyinSort)

借助第三方库pinyin排序

const data = ['武汉', '上海', '北京', '天津', '安徽', '内蒙古']
// 借助第三方库pinyin排序
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 = ['武汉', '上海', '北京', '天津', '安徽', '内蒙古']
// 使用Unicode范围进行汉字排序
const pinyinSort = (param1, param2) => {
  return param1.charCodeAt(0) - param2.charCodeAt(0);
}
const sortedData = data.sort(pinyinSort)