2014-01-16 70 views
0

這裏是我的數組:排序JavaScript數組與非數字鍵

var a = []; 
a["P.M.L."] = 44; 
a["P.CO."] = 56; 
a["M.É.D."] = 10; 

我現在想所以它看起來像數組排序:

["M.É.D." : 10, "P.M.L." : 44, "P.CO." : 56] 

我已經嘗試了許多解決方案,並沒有他們已經取得成功。我想知道你們中的一個是否有任何想法如何對數組進行排序。

+0

你的意思是:「這是我的數組,但我真的想要一個對象」?並且對象沒有順序... – elclanrs

+2

這不是一個數組,它是一個_object_。 JavaScript數組具有嚴格的數字鍵,但對象在動態確定時使用'[]'語法來訪問屬性。否則,它們將是點屬性。 (在技術上你將它聲明爲一個數組,但是然後向它添加了額外的對象屬性) –

+0

而且,JavaScript中的對象屬性本質上不是有序的。 –

回答

0

正如評論所說,在這裏你的問題不只是排序,而且你的數據結構是如何設置的。我想你會真正想要的這裏是對象的數組,這看起來是這樣的:

var a = [{name: "P.M.L", val: 44}, 
     {name: "P.CO.", val: 56}, 
     {name: "M.É.D.", val: 10}]; 

隨着組織數據這一新的方式,你可以通過val屬性用下面的代碼進行排序a

a.sort(function(x, y) { 
    return x.val - y.val; 
}); 
0

MDN website直摘自:

a.sort(function (a, b) { 
    if (a.name > b.name) 
     return 1; 
    if (a.name < b.name) 
     return -1; 
    // a must be equal to b 
    return 0; 
}); 

但是,這真的不是一個數組,所以你必須要重組到這一個。

+0

認爲你可以做'return a.name> b.name'。 – elclanrs

1

簡單的解決方案將是:

a.sort(function(x, y) { 
    return x.name - y.name; 
})