2012-08-30 48 views
3

我有數組這樣的Javascript排序()數組按數字順序

var Arr = [ 'h78em', 'w145px', 'w13px' ] 

我想這個數組按數字順序

[ 'w13px', 'h78em', 'w145px' ] 

排序定期數值排序我使用這個功能

var sortArr = Arr.sort(function(a,b){ 
    return a-b; 
}); 

但由於字符數組中的字符此功能不起作用

可以對這個數組進行排序嗎?我如何拆分/匹配數組?

+0

「78em」, 「145px」:這些都是不同的單位。爲什麼這樣?你想獨立於單元還是應該像素轉換髮生? –

回答

8

您可以使用正則表達式來刪除所有的字母排序時:

var Arr = [ 'h78em', 'w145px', 'w13px' ]​; 
var sortArr = Arr.sort(function(a, b) { 
    a = a.replace(/[a-z]/g, ""); // or use .replace(/\D/g, ""); 
    b = b.replace(/[a-z]/g, ""); // to leave the digits only 
    return a - b; 
}); 

DEMO:http://jsfiddle.net/8RNKE/

+1

清潔和簡單:) –

+1

我會加'i',所以它不僅檢查小寫字母,使它更安全。 – sQVe

+0

@sQVe好的。還有一個選項是使用'/ [\ D]/g'只留下數字。但是,這取決於輸入。 – VisioN