day82-中文排序

碎碎念

最近有中文排序的需求,这种排序要根据中文推出中文拼音然后再排序。所以免不了查字典。这类的还是比较成熟的,有成熟的方案。比如pinyin.js。


pinyin.js

安装

npm i pinyin

下面以对象的排序为例,其实这个例子官方文档是有的。需要看仔细的可以去官方文档看,还是较为详细的。这里只是简单地引导一下。

const pinyin = require('pinyin')
let data = [{a: '牛', b: '11'}, {a: '啊', b: '22'}, {a: '到', b: '33'}, {a: 'ab', b: '53'}]
// console.log(data.sort(pinyin.compare(a)))
// const data = '我要排序'.split('');

// 建议将汉字的拼音持久化存储起来。
// const pinyinData = data.map(han => ({
// zi: han.a,
// py: pinyin(han.a)[0][0], // 可以自行选择不同的生成拼音方案和风格。
// }))
const pinyinData = data.map(han => ({
...han,
py: pinyin(han.a)[0][0], // 可以自行选择不同的生成拼音方案和风格。
}))
const sortedData = pinyinData.sort((a, b) => {
return a.py.localeCompare(b.py);
}).map(d => {
return d.zi
});
console.log(pinyinData)
console.log(sortedData)
文章作者: lmislm
文章链接: http://lmislm.com/2019/04/03/2019-04-03/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 LMISLMのBlog