2013-04-17 2 views
5

だから私は、ほぼすべてのケースで素晴らしい作品アルファベット順に値をソートするために設計されたソート方法を持っている:タイトルはそれに番号が含まれている場合AS3ソートアルファベットと数値が同時に

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

問題は、しかしです。例えば

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

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

に並べ替えますが、私は起こる必要があること、それがアルファベット順にソートするためのものですが、それは数に遭遇したときの数値を考慮しますと、したがって、並べ替えは返されます

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

私はいくつかの種類のexisこれを行うために正規表現やアルゴリズムを組み込んでいますが、私は恐怖を感じていません。並べ替えのためのすべての検索は、アルファベット順または数値順でも、両方でもありません。

ありがとうございます!

答えて

4

AS3に翻訳されたJavaScriptソリューションが見つかりました:Sort mixed alpha/numeric array完璧

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

作品、本当にありがとうございました:

ソリューションは、次のようになります! – rcooper102

関連する問題