2014-01-08 141 views
1

我已經字典下列字典,我因爲我沒有權力在服務器端使用這種格式排序JSON字典字母順序值

{"1":{"aov":0,"oo":1,"ot":"Cem-Merve","pi":87},"2":{"aov":100,"oo":2,"ot":"Murat-Pelin","pi":88},"3":{"aov":0,"oo":3,"ot":"Fevzi-Azbiye","pi":85},"4":{"aov":0,"oo":4,"ot":"Burak-Gizem","pi":86},"21":{"aov":100,"oo":21,"ot":"Murat","pi":84,"ro":2},"22":{"aov":0,"oo":22,"ot":"Pelin","pi":83,"ro":2}} 

我需要它使用JavaScript通過按鍵按字母順序排序要像

{"1":{"aov":0,"oo":1,"ot":"Cem-Merve","pi":87},"2":{"aov":100,"oo":2,"ot":"Murat-Pelin","pi":88},"21":{"aov":100,"oo":21,"ot":"Murat","pi":84,"ro":2},"22":{"aov":0,"oo":22,"ot":"Pelin","pi":83,"ro":2},"3":{"aov":0,"oo":3,"ot":"Fevzi-Azbiye","pi":85},"4":{"aov":0,"oo":4,"ot":"Burak-Gizem","pi":86}} 

我已經試過類似的東西,但是沒有希望:

function sortObject(o) { 
    var sorted = {}, 
    key, a = []; 

    for (key in o) { 
     if (o.hasOwnProperty(key)) { 
      a.push(key); 
     } 
    } 

    a.sort(); 

    for (key = 0; key < a.length; key++) { 
     sorted[a[key]] = o[a[key]]; 
    } 
    return sorted; 
} 

任何想法如何執行該操作?

+1

的JavaScript將是一個良好的開端。嘗試一下,當你卡住時回覆。 – crush

+0

我被卡住了,這就是爲什麼我問這個 – ImadBakir

+1

JavaScript對象不可排序,您需要將它轉換爲Array,然後使用Array.prototype.sort對項目進行排序。 –

回答

1

正如其他人在評論中指出的,一個對象的屬性不能被排序。你可以做的是產生一個對象屬性的有序數組,並迭代該數組以訪問你想要的對象屬性。你基本上已經在你的示例代碼中做了這個 - 你只是試圖把它做得太過分了。

See jsFiddle

function getObjectKeysAlphabetical(obj) { 
    var keys = [], 
     key; 

    for (key in obj) { 
     if (obj.hasOwnProperty(key)) 
      keys.push(key); 
    } 

    keys.sort(); 

    return keys; 
} 

var obj = {}; //Your object here. 
var keys = getObjectKeysAlphabetical(obj) 
    i = 0, key = null, val = null; 

//Iterate the array of sorted keys. 
for (i = 0; i < keys.length; i++) { 
    key = keys[i]; 
    val = obj[key]; //Get the value of the property here. 
} 
+0

工作像一個魅力與一些編輯,以符合我的要求,非常感謝主意。 – ImadBakir