前端排序中文,按拼音首字母排序。發現網上很多有名的網站也沒有處理好多音字問題,於是和需求討論後,不需要處理多音字了。便使用瞭如下的一個簡便方法
核心代碼
a.localeCompare(b)
代碼
獲取首字母並分類:
function PYSort(source) {
if (!String.prototype.localeCompare) return null;
const letters = "*abcdefghjklmnopqrstwxyz".split(''),
zh_cn = "阿八嚓噠妸發旮哈譏咔垃痳拏噢妑七呥扨它穵夕丫帀".split(''),
totalList = [];
for (let i = 0; i < letters.length; i++) {
const item = {
name: letters[i],
list:[]
};
for (let val of source) {
if ((!zh_cn[i-1] || zh_cn[i-1].localeCompare(val) <= 0) && val.localeCompare(zh_cn[i]) == -1) {
item.list.push(val);
}
}
if ( item.list.length) {
item.list.sort(function(a,b) {
return a.localeCompare(b);
});
totalList.push(item);
}
}
return totalList;
}