[問題] 請問 javascrip 字串與數字混合排序

看板Ajax作者 (給我極品其餘免談)時間14年前 (2012/07/09 16:42), 編輯推噓2(209)
留言11則, 3人參與, 最新討論串1/1
各位大大午安 最近遇到一個很棘手的問題(我功力太弱) 就是字串和數字混合排序 還麻煩各位大大指點一下觀念 非常感謝了 T_T 範例如下: $(function(){ var a = []; a=[1,2,43,4,"61",66,7,"a490",5,3,77,7,777,80]; function aa(m,n){ return (m-n); } for(var i=0; i<a.length; i++){ if(Math.floor(a[i]/2)>= 0 || Math.floor(a[i]/2)< 0){ a[i] = +(a[i]); } else{ a[i] = a[i]; } } $("#span1").append(a.sort(aa)+","); }); 紅色的是我想要排序的陣列 預期的結果是:1,2,3,4,5,7,7,43,61,66,77,80,777,a490 用以上的寫法順利達成 (for迴圈是判斷是不是數字,不是的話就把字串轉成數字) 但是陣列內如果增加一個b,變成: a=[1,2,43,4,"61",66,7,"a490",5,3,77,7,777,80,"b"]; 結果卻變成:1,b,43,4,61,66,7,2,5,3,77,7,777,80,a490 亂七八糟了...T_T 不知道這種字串與數字混合且不規則的陣列 各位大大都是怎麼解決排序問題的呢? 苦惱好久...非常感謝啦 T_T -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.127.180.41

07/09 17:04, , 1F
Math.floor(a[i]/2)>= 0 || Math.floor(a[i]/2)< 0
07/09 17:04, 1F

07/09 17:05, , 2F
我想確認一下是不是我看錯... 這個條件式會不會怪怪的...
07/09 17:05, 2F

07/09 17:05, , 3F
同時滿足 大於等於小於 那應該就等於 true ?
07/09 17:05, 3F

07/09 17:10, , 4F
不知道要怎樣判斷是否為數字,想說這樣不知道可不可以 T_T
07/09 17:10, 4F

07/09 17:12, , 5F
本來有想要用Typtof="number"的方式,但對"61"又不適用了...
07/09 17:12, 5F

07/09 17:13, , 6F
才會寫如果非數字字串除2會等於null,就不是數字的迴圈 @_@
07/09 17:13, 6F

07/09 17:17, , 7F
可以用isNaN判斷是否為數字
07/09 17:17, 7F

07/09 17:18, , 8F
isNaN 如果是數字會回 false , 非數字回 true
07/09 17:18, 8F

07/09 17:20, , 9F
謝謝大大,我來試試看 ^^
07/09 17:20, 9F

07/10 20:05, , 10F
07/10 20:05, 10F

07/10 20:08, , 11F
同頁有 js implementation,似乎是 zlib license
07/10 20:08, 11F
文章代碼(AID): #1F-fbZU1 (Ajax)
文章代碼(AID): #1F-fbZU1 (Ajax)