前端 中文排序


1. 瀏覽器的js實現中文排序

  參照地址: https://blog.csdn.net/qq_29819449/article/details/80520590

2. 瀏覽器的js實現方式的缺點

  2.1 can i use 網站 目前瀏覽器對js中文排序方法的支持也不是太好:https://caniuse.com/#search=localecompare

  2.2 js實現方式不適用於nodejs 參照網址:https://segmentfault.com/q/1010000011936161

    瀏覽器能正確排序是因為 chrome 對 localeCompare 方法的locales做了支持使其能按指定地區對字符串進行排序。然而 node 並沒有做支持~

3. nodejs實現中文排序(建議此方案)

  參照地址:https://www.jianshu.com/p/54580701256a

-----------------------------------------------------------------------

瀏覽器 js 實現方式:

let array = ['武漢', '北京', '上海', '天津'];
array.sort(
    function compareFunction(param1, param2) {
        //console.log("param1",param2)
        return param1.localeCompare(param2, 'zh-Hans-CN', {sensitivity: 'accent'});
    }
);
//console.log("arr",array)
let arrdata = e.data;//此處主要是針對json數據中某一個字段進行排序
arrdata.sort(
    function compareFunction(param1, param2) {

        return param1.nickname.localeCompare(param2.nickname, 'zh-Hans-CN', {sensitivity: 'accent'});
    }
)

nodejs實現方式

先安裝pinyinlite.js這個模塊,它可以將中文轉為拼音

npm i pinyinlite

(pinyinlite庫的說明:https://www.npmjs.com/package/pinyinlite)

const pinyin = require('pinyinlite')

pinyin('中國')
// console => [['zhong'], ['guo']]

['中國', '美國', '日本'].sort((item1, item2) => {
    let c1 = pinyin(item1).join(',')//加,分割,排序更准備 比如 河北 河南 黑龍江 he,bei  he,nan  hei,long,jiang
    let c2 = pinyin(item2).join(',')
    return c1.localeCompare(c2)
})
// console => arr = ['美國', '日本', '中國']

 

pinyinlite:

最快 ⚡️ 而又輕量的 JavaScript 拼音庫,適合在前后端實現拼音輸入匹配。

  • 內存占用最小(~ 2 MB)且最快(~ 10,000,000 字/s)的 JavaScript 拼音庫。
  • 字典包含約 2.7 萬簡體繁體字,覆蓋全面(常用漢字不到五千個)。
  • 體積小,gzip 后約 80 KB。
  • 另提供基於【現代漢語通用字表(2013)】的常用字版,包含約 8000 個漢字,gzip 后 25 KB。
  • 支持多音字。
  • 沒有任何依賴項。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM