2016-07-18 48 views
-4

我有一個數組:如何排序/秩序的數組列表的數組開始與在JQUERY中的數字不是數字?

data =["c3.2xlarge","c3.4xlarge","c3.large"]; 

data= [ "c3.4xLarge", "c3.2xLarge", "c3.8xLarge", "c3.Large", 
     "d3.4xLarge", "d3.2xLarge", "d3.8xLarge", "d3.Large", 
     "t2.4xLarge", "t2.2xLarge", "t2.8xLarge", "t2.Large" 
     ]; 

它現在是按字母順序排列和分類,但是這給了我們,當我們真的要c3.large先出現。

期待輸出 = [ 「c3.Large」, 「c3.2xLarge」, 「c3.4xLarge」, 「c3.8xLarge」, 「d3.Large」, 「d3.2xLarge」,「D3。 4xLarge「,」d3.8xLarge「, 」t2.Large「,」t2.2xLarge「,」t2.4xLarge「,」t2.8xLarge「 ];

如何創建一個函數來排序這樣的對象?

+3

你怎麼希望他們排序,你希望輸出什麼? –

+0

嗨,歡迎,請提供您的代碼到目前爲止,以便我們可以提供幫助。沒有努力的證據,人們很少傾向於爲你編碼。正如大衛所言, ,還包括期待輸出。 – Visualife

+0

data = [「c3.4xLarge」,「c3.2xLarge」,「c3.8xLarge」,「c3.Large」,「d3.4xLarge」,「d3.2xLarge」,「d3.8xLarge」,「d3.Large 「,」t2.4xLarge「,」t2.2xLarge「,」t2.8xLarge「,」t2.Large「,]; 期待輸出:[「c3.Large」,「c3.2xLarge」,「c3.4xLarge」,「c3.8xLarge」,「d3.Large」,「d3.2xLarge」,「d3.4xLarge」,「d3 .8xLarge「,」t2.Large「,」t2.2xLarge「,」t2.4xLarge「,」t2.8xLarge「]; – Mastikhor

回答

0

重寫js數組排序方法; 希望這可以幫助

var data = ["c3.2xlarge","c3.4xlarge","c3.large"]; 
 
    console.log(data.sort(function (a,b) { 
 
     var aSub = a.substring(3,4), 
 
     bSub = b.substring(3,4); 
 
    if(isNaN(aSub)){ 
 
     return -1; 
 
    } 
 
    else if(isNaN(bSub)){ 
 
     return 1; 
 
    } 
 
    else{ 
 
     return aSub > bSub ? 1:-1; 
 
    } 
 
}));

+0

謝謝柯蒂斯,工作很好。 但是,我有Array Like, data = [ 「c3.4xLarge」,「c3.2xLarge」,「c3.8xLarge」,「c3.Large」, 「d3.4xLarge」,「d3.2xLarge」, 「d3.8xLarge」,「d3.Large」, 「t2.4xLarge」,「t2.2xLarge」,「t2.8xLarge」,「t2.Large」, ]; 期待輸出: [「c3.Large」,「c3.2xLarge」,「c3.4xLarge」,「c3.8xLarge」, 「d3.Large」,「d3.2xLarge」,「d3.4xLarge」, 「d3.8xLarge」, 「t2.Large」,「t2.2xLarge」,「t2.4xLarge」,「t2.8xLarge」, ]; 那時是失敗的。 – Mastikhor

+0

這意味着你應該在檢查第四個字符前檢查第一個字符 –

0
var data = [ "c3.4xLarge", "c3.2xLarge", "c3.8xLarge", "c3.Large", "d3.4xLarge", "d3.2xLarge", "d3.8xLarge", "d3.Large", "t2.4xLarge", "t2.2xLarge", "t2.8xLarge", "t2.Large", ]; 


data.sort(function (a,b) { 
    var firA = a.substring(0,1), 
     firB = b.substring(0,1); 
     // console.log(firA); 
     // console.log(firB); 
    if(firA != firB){ 
     return firA >firB ? 1 : -1; 
    } 
    var aSub = a.substring(3,4), 
    bSub = b.substring(3,4); 
    if(isNaN(aSub)){ 
     return -1; 
    } 
    else if(isNaN(bSub)){ 
     return 1; 
    } 
    else{ 
     return aSub > bSub ? 1:-1; 
    } 
}) 
console.log(data); 
+0

完成。非常好。工作正常。謝謝陳。 – Mastikhor

+0

輸入數組只有很少的變化... 我有這種類型的數組格式: data = [ Object {key =「c3.2xlarge」,id = 85}, Object {key =「c3.4xlarge」,對象{key =「c3.8xlarge」,id = 88}, Object {key =「c3.large」,id = 83}, Object {key =「c3.xlarge」,id =對象{key =「c4.8xlarge」,id = 89}, Object {key =「c4.4xlarge」,id = 91}, Object {key =「c4.8xlarge」,id = 92} , 對象{鍵= 「c4.large」,ID = 87}, 對象{鍵= 「c4.xlarge」,ID = 90}, 對象{鍵= 「d2.2xlarge」,ID = 104}, 對象{key =「d2.4xlarge」,id = 103}, Object {key =「d2.8xlarge」,id = 105}, Object {key =「d2.xlarge」,id = 102}]; – Mastikhor

+0

我嘗試像這樣:使用a1.key,但輸出不正確。 數據。sort(function(a1,b1){var a = a1.key; var b = b1.key; ------- ------- -------- 返回數據; } – Mastikhor