最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript實現(xiàn)拼音排序的方法

 更新時間:2012年11月20日 09:50:07   投稿:whsnow  
本文將介紹JavaScript如何實現(xiàn)拼音排序 支持所有主流瀏覽器+中英文系統(tǒng)

一般情況下,大家會使用下面的方法來進行漢字的拼音排序

復制代碼 代碼如下:

var list = [ '王', '張','李'];
list.sort(function (a, b) {
return a.localeCompare(b);
});

localeCompare() :用本地特定的順序來比較兩個字符串。
通過localeCompare這個方法來進行拼音排序的不可靠之處在于:
1. 很依賴中文操作系統(tǒng)
2. 很依賴瀏覽器的內核
也就是說,如果你的網(wǎng)站訪問者是通過非中文系統(tǒng),或者非IE瀏覽器(如Chrome),那么他將很可能無法看到我們所預期的拼音排序結果。
--------------------------------------------------------------------------------
下面介紹一下我解決這個問題的辦法,希望能拋磚引玉哈:
復制代碼 代碼如下:

var CompareStrings = {
db: '吖阿啊錒錒嗄哎哀...袰襨鐢閪闏霻鶑', // 其中省略幾萬字
getOrderedUnicode: function (char) {
var originalUnicode = char.charCodeAt();
if (originalUnicode >= 0x4E00 && originalUnicode <= 0x9FA5) {
var index = this.db.indexOf(char);
if (index > -1) {
return index + 0x4E00;
}
}
return originalUnicode;
},
compare: function (a, b) {
if (a == b) {  return 0;
}
// 這里可以根據(jù)具體需求來改寫,目前的寫法是把空字符串排在最后if (a.length == 0) { return 1; }
if (b.length == 0) { return -1; }
var count = a.length > b.length ? b.length : a.length;
for (var i = 0; i < count; i++) {
  var au = this.getOrderedUnicode(a[i]);
  var bu = this.getOrderedUnicode(b[i]);
  if (au > bu) {
   return 1;
  } else if (au < bu) {
   return -1;
  }
}
return a.length > b.length ? 1 : -1;
 }
}
// 重寫系統(tǒng)原生的localeCompare
String.prototype.localeCompare = function (param) {
  return CompareStrings.compare(this.toString(), param);
}

大家可以通過下面的鏈接下載到完整代碼 http://xiazai.jb51.net/201211/yuanma/js_pinyin_jb51.rar
簡單介紹一下實現(xiàn)的原理:
1. 取得按拼音排序好的字庫(db):有多種途徑可以達到目的,我是用JavaScript+C#組合完成的,先用腳本把所有漢字枚舉出來,再提交到C#后臺排序好,再輸出到前臺,這個只是準備工作哈,怎么搞都可以。
2. 確定兩個字符誰比較大(getOrderedUnicode):因為排序的時候,不光要處理漢字,還要處理漢字以外的字符,所以比較器必須能識別所有的字符,這里我們通過判斷一個字符是否是漢字來區(qū)別對待:如果是漢字,那么就在排序好的字庫里搜索它的索引值,得到的索引值再加上Unicode字符集中第一個漢字所處的位置,就是在“校準”以后的Unicode字符集中的索引值了;如果不是漢字,那么就直接返回它在Unicode字符集中的索引值即可。
3. 比較兩個字符串(compare):逐一比較兩個字符串中的每一個字符(在有效范圍內比較,也就是較短的那個字符串的長度),如果發(fā)現(xiàn)a比b大,就返回1,反之返回-1。
4. 在有效范圍內比較結束后如果還沒分出勝負,就看誰比較長,例如a='123',b='1234',那么較長的b要排在后面。
綠色通道: 好文要頂 關注我 收藏該文與我聯(lián)系

相關文章

  • JS按鈕閃爍功能的實現(xiàn)代碼

    JS按鈕閃爍功能的實現(xiàn)代碼

    js按鈕閃爍功能的實現(xiàn)代碼分為html和js兩部分代碼,具體實現(xiàn)代碼大家參考下本文
    2017-07-07
  • JS實現(xiàn)去除數(shù)組中重復json的方法示例

    JS實現(xiàn)去除數(shù)組中重復json的方法示例

    這篇文章主要介紹了JS實現(xiàn)去除數(shù)組中重復json的方法,涉及javascript針對json數(shù)組數(shù)據(jù)的遍歷、判斷、存取等相關操作技巧,需要的朋友可以參考下
    2017-12-12
  • uniapp頁面?zhèn)鲄⒌娜N方式實例總結

    uniapp頁面?zhèn)鲄⒌娜N方式實例總結

    在進行頁面的跳轉的時候,往往需要我們將一些參數(shù)攜帶著傳遞過去這里的class樣式,下面這篇文章主要給大家介紹了關于uniapp頁面?zhèn)鲄⒌娜N方式,需要的朋友可以參考下
    2022-11-11
  • Bootstrap下拉菜單效果實例代碼分享

    Bootstrap下拉菜單效果實例代碼分享

    這篇文章主要為大家詳細介紹了Bootstrap下拉菜單效果實例代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-06-06
  • JavaScript中的全局屬性與方法深入解析

    JavaScript中的全局屬性與方法深入解析

    這篇文章主要給大家介紹了關于JavaScript中全局屬性與方法的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用JavaScript具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2020-06-06
  • js 性能優(yōu)化之算法和流程控制

    js 性能優(yōu)化之算法和流程控制

    循環(huán)處理是最常見的編程模式之一,也是提升性能必須關注的要點之一。本文將對此進行介紹。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • 深入淺出JSON.parse的實現(xiàn)方法

    深入淺出JSON.parse的實現(xiàn)方法

    眾所周知,JSON.parse方法用于將一個json字符串轉換成由字符串描述的?JavaScript?值或對象,本文主要為大家介紹了JSON.parse方法的使用,需要的可以參考下
    2024-04-04
  • javascript中的異步調用機制

    javascript中的異步調用機制

    這篇文章主要介紹了javascript中的異步調用機制,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • JS簡單表單驗證功能完整示例

    JS簡單表單驗證功能完整示例

    這篇文章主要介紹了JS簡單表單驗證功能,結合完整實例形式分析了JavaScript表單驗證相關的字符串判斷、正則驗證、計算等相關操作技巧,需要的朋友可以參考下
    2020-01-01
  • javascript 常用驗證函數(shù)總結

    javascript 常用驗證函數(shù)總結

    隨著做項目數(shù)量的越來越越多,其中用到js的地方很多相同,這里自己整理了一些常用表單驗證的js方法,雖然和其他js驗證框架有一定的差距,但是畢竟是自己總結的一些東西,在此與紀錄分享一下。
    2016-06-06

最新評論

泸水县| 马边| 南昌县| 古交市| 德惠市| 乌拉特前旗| 大关县| 昌都县| 黄龙县| 临夏市| 米脂县| 云梦县| 磐安县| 大丰市| 家居| 嘉义市| 尼勒克县| 泗水县| 浙江省| 景谷| 渭南市| 渭源县| 华蓥市| 黄山市| 兰西县| 两当县| 获嘉县| 安西县| 繁昌县| 鄯善县| 芜湖市| 甘洛县| 隆尧县| 清流县| 康马县| 青州市| 平山县| 政和县| 东方市| 浑源县| 辽源市|