이것은 지루하고, '100'은 '2'보다 먼저 정렬됩니다.
문자열을 개별 문자와 숫자 그룹으로 나눌 수 있습니다.
숫자와 같은 임의의 숫자 그룹을 정렬하고 문자 코드로 문자로 정렬하려면 a-z 문자에 '가중치'를 추가하십시오.
Array.prototype.a1Sort= function(){
var a1, b1, rx=/(\d+)|(\D)/g, rd=/\d+/;
return this.sort(function(a, b){
a= a.toLowerCase().match(rx);
b= b.toLowerCase().match(rx);
while(a.length && b.length){
a1= a.shift();
b1= b.shift();
if(rd.test(a1) || rd.test(b1)){
if(!rd.test(a1)) return 1;
if(!rd.test(b1)) return -1;
if(a1!= b1) return a1-b1;
}
else{
a1= a1.charCodeAt(0);
b1= b1.charCodeAt(0);
if(a1> 96 && a1<123) a1+= 1000;
if(b1> 96 && b1<123) b1+= 1000;
if(a1!= b1) return a1= b1;
}
}
return a.length-b.length;
});
}
var s1=['#1 A T','A T','{C T'];
alert(s1.customSort())
/* returned value: (Array)
#1 A T,{C T,A T
*/
"범주 내의 모든 항목은 알파벳순으로 정렬되어야하지만"문장은 끝내지 않습니다. 우리는 예외가 무엇인지 알지 못하면 당신을 도울 수 없습니다. 당신은 정교 할 수 있습니까? – Pops
오해해서 죄송합니다. 예 - 항목의 카테고리입니다. 따라서 작업의 주된 요소는 변경되지 않습니다. "범주 내의 모든 항목은 사전 순으로 정렬되어야합니다." – user341203