var array = [\'92256a\', \'10a\', \'4567b\', \'4567a\', \'1000a\', \'C1234\', \'245W5\', \'500a\', \'500\', \'D418\', \'C2456\'];
var compare = function(a, b){
if(a == b)
return 0;
if(!!a.match(/^\\d/) && !b.match(/^\\d/))
return -1;
if(!!a.match(/^\\d/)){
var s_a = parseInt(a.match(/^\\d+/));
var s_b = parseInt(b.match(/^\\d+/));
}else if(!a.match(/^\\d/)){
var s_a = a.match(/^\\D+/);
var s_b = b.match(/^\\D+/);
}
if(s_a != s_b)
return (s_a < s_b) ? -1 : 1;
else
return compare(a.replace(s_a, \"\"), b.replace(s_b, \"\"));
}
array.sort(compare);
그냥 물어버렸다.
물론 모든 경우에 제대로 돌아가는지 검증안됨.
틀렸네. 밥먹고 다녀와서 수정
우왕-
음 난 먼저 앞자 따오고 int로 파싱해서 파싱되면 그거 정렬하고 파싱 안되면 아스키값 가져와서 확인할라했느데.
하지만 아스키값으로만 가져와도 상관없구나 --;