2011-05-11 52 views
1

數學很糟糕,但我需要能夠以數字-alpha順序排序JavaScript(或jQuery)中的字符串,最後爲零。我知道我可以用myStr.split('')將字符串轉換爲數組,然後用自定義排序函數調用sort(),所以這裏是我到目前爲止:Javascript排序字符串數字-alpha結尾爲零

function mysort(a, b) { 
    // not sure what to put here. 
    // order should be: 123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0 
} 

function sortMyString(str) { 
    str.split(''); 
    return str.sort(mysort); 
} 

我真的很感謝這方面的幫助。

謝謝。

+0

你嘗試使用base32還是什麼?我想知道爲什麼0會大於1並且所有的字母表都是? – Robert 2011-05-11 23:43:30

+0

這是一個字符串,因此字符串中的數字不是真正的數字:)在我的應用程序中,它們總是需要在字符串的末尾。 – Pyrite 2011-05-11 23:48:02

回答

0

這將導致該字符串作爲與上述相同的,隨意串混淆,增加更多的等,它應該拿出你想要的順序。

http://jsfiddle.net/dJMHK/

var str = '123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0'; 

str = str.split(''); 

str = str.sort(function (a,b) { 
    if (a === '0' || b === '0') 
     return (b === a) ? 0 : (a < b) ? 1 : -1; 

    return (a < b) ? -1 : (a === b) ? 0 : 1; 
}); 

document.write(str); 
+0

似乎到目前爲止工作,現在做測試。 – Pyrite 2011-05-11 23:58:38

+0

非常感謝! – Pyrite 2011-05-12 01:00:06

0

如果要拆分並比較單個字符,則可以使用charCodeAt函數。

b.charCodeAt(0) 

得到Unicode字符值。你會想要1-9,A-Z,a-z,0以及你沒有計劃的任何事情。

在您的排序函數中,以相應的順序獲取項目:返回0,如果a == b,則返回1如果a> b,則返回-1如果是< b。讓我知道如果您在排序功能上需要幫助,這是我現在有空引導您的時間。