作者zzpop (给我极品其余免谈)
看板Ajax
标题[问题] 请问 javascrip 字串与数字混合排序
时间Mon Jul 9 16:42:07 2012
各位大大午安
最近遇到一个很棘手的问题(我功力太弱)
就是字串和数字混合排序
还麻烦各位大大指点一下观念
非常感谢了 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
1F:→ kerash:Math.floor(a[i]/2)>= 0 || Math.floor(a[i]/2)< 0 07/09 17:04
2F:→ kerash:我想确认一下是不是我看错... 这个条件式会不会怪怪的... 07/09 17:05
3F:→ kerash:同时满足 大於等於小於 那应该就等於 true ? 07/09 17:05
4F:→ zzpop:不知道要怎样判断是否为数字,想说这样不知道可不可以 T_T 07/09 17:10
5F:→ zzpop:本来有想要用Typtof="number"的方式,但对"61"又不适用了... 07/09 17:12
6F:→ zzpop:才会写如果非数字字串除2会等於null,就不是数字的回圈 @_@ 07/09 17:13
7F:→ kerash:可以用isNaN判断是否为数字 07/09 17:17
8F:→ kerash:isNaN 如果是数字会回 false , 非数字回 true 07/09 17:18
9F:→ zzpop:谢谢大大,我来试试看 ^^ 07/09 17:20
11F:推 B9: 同页有 js implementation,似乎是 zlib license 07/10 20:08