作者kerash (K.T)
看板Ajax
標題Re: [問題] javascript 中文排序問題
時間Tue Jun 26 11:38:44 2012
※ 引述《zzpop (給我極品其餘免談)》之銘言:
: <script>
: $(function(){
: var array = ['二','四','一','三','我','哈','王','嘿','a','f','b'];
: array.sort(function(a,b){return a.localeCompare(b)});
: for(var i=0; i<array.length; i++){
: $("body").append(array[i]+",");
: }
: });
: </script>
: 排序出來變成:
: a,b,f,一,三,二,哈,嘿,四,我,王,
以原排序
['二','四','一','三','我','哈','王','嘿','a','f','b']
轉 unicode
[\u4e8c,\u56db,\u4e00,\u4e09,\u6211,\u54c8,\u738b,\u563f,\u61,\u66,\u62]
再做排序就變成
u61,u62,u66,u4e00,u4c09,u4e8c,u54c8,u563f,u56db,u6211,u738b
a b f 一 三 二 哈 嘿 四 我 王
所以排序正確..
--
[There's no undo in your life]
●~ ●~ ●~ ●~ ●~ ●~
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.34.30.6
1F:推 edward13:localeCompare每個瀏覽器實作都不太一樣 IE8跟FF是一二三 06/26 11:54
4F:→ kerash:是,主要看實做的方法了,但主要是說unicode比較 06/26 13:08
5F:→ zzpop:看起來單純用JS做中文排序可能有難度了 06/26 15:02
6F:→ zzpop:所以如果要以筆畫數做排列,就必須要從MSSQL著手了嗎? 06/26 15:03
7F:→ zzpop:原本只是想要單純把靜態表格做成有互動效果而以 ^^ 06/26 15:04
8F:→ zzpop:還是謝謝各位大大的指點 ^^ 06/26 15:04
9F:推 mrbigmouth:如果你只是想要數字可以照順序 先取代一下就可以了 06/26 18:32
10F:→ mrbigmouth:其他中文字的反正也看不出來吧? 06/26 18:32
11F:→ mrbigmouth:先把一->1 二->2 排完序再轉回來 06/26 18:32
12F:→ kerash:他是要筆劃數的話應該就不行了吧@@.. 06/26 20:12
13F:推 mrbigmouth:筆劃數沒可能吧 big5都不是照比劃去排的不是嗎? 06/26 21:38
14F:→ mrbigmouth:除非你自建資料庫讓電腦知道哪個字有幾筆 不然不管用 06/26 21:39
15F:→ mrbigmouth:什麼語言都不可能啊 06/26 21:39
16F:→ kerash:是,只能先見對應,否則不可能,不然去抓教育部字典db XD 06/26 21:40
17F:→ kerash: ^建 06/26 21:40
18F:推 WayneFu:我之前也查過這個議題 因中文要轉 unicode 所以用 js 要達 06/27 09:44
19F:→ WayneFu:到理想的排序效果目前是無解 (單靠js的情況下) 06/27 09:45
20F:推 LPH66:big5 其實是部份照筆畫排 A440~C67E 一組 C940~F9D5 又一組 06/27 12:18
21F:→ LPH66:每一組當中是照筆畫排的 06/27 12:18
22F:推 zzpop:瞭解了,謝謝各位大大 06/27 15:12
23F:→ zzpop:目前先訂一組額外的標籤作為排序識別,比較麻煩就是了 XD 06/27 15:13