2013-04-17 17 views
5

yüzden hemen hemen her durumda harika işler alfabetik değerlerinin sıralamak için tasarlanmış bir sıralama yöntemi vardır: Bir başlık içinde bir sayı içeriyorsa,As3 Sıralama Alfabetik ve Sayısal Eş zamanlı

function alphabetical(name1, name2):int { 
     if (name1 < name2){ 
      return -1; 
     } else if (name1 > name2){ 
      return 1; 
     }else { 
      return 0; 
     }; 
    }; 

sorun olsa.

Örneğin:

['abc 8','abc 1','abc 10'] 

['abc 1','abc 10','abc 8'] 

sıralanması ama ne gerçekleşmesi gereken alfabetik olması için ama bir numara karşılaştığında bir sayısal değer dikkate alınır ve olur Böylece sıralama

Bir çeşit exis olduğunu umardım. Bunu yapmak için ting regex veya algoritmalar ama korkarım ki aramak için en ufak bir ipucu yok. Sıralama için yaptığım tüm aramalar ya alfabetik ya da sayısal olarak mı, her ikiside değil.

çok teşekkürler!

cevap

4

AS3: Sort mixed alpha/numeric array'a çeviren bir JavaScript çözümü buldum. kusursuzca

var reA = /[^a-zA-Z]/g; 
var reN = /[^0-9]/g; 
function sortAlphaNum(a,b) { 
    var aA = a.replace(reA, ""); 
    var bA = b.replace(reA, ""); 
    if(aA === bA) { 
     var aN = parseInt(a.replace(reN, ""), 10); 
     var bN = parseInt(b.replace(reN, ""), 10); 
     return aN === bN ? 0 : aN > bN ? 1 : -1; 
    } else { 
     return aA > bA ? 1 : -1; 
    } 
} 

var arr = ['abc 8','abc 1','abc 10']; 
arr.sort(sortAlphaNum); 

trace(arr); // abc 1,abc 8,abc 10 
+0

eser, çok teşekkürler:

çözüm gibi bir şey olurdu! – rcooper102

İlgili konular