2014-02-17 28 views
1

我對JS的obj順序問題:如何獲得JS對象的正確順序?

當我定義:

var objJSON = {}; 
objJSON[31] = '123'; ------------- (1) 
objJSON[23] = '456'; ------------- (2) 

,並提醒對象:

alert(JSON.stringify(objJSON, null, 4)); 

它顯示:

" 
    { 
     "23":"456", 
     "31":"123" 
    } 
    " 

    I would like to get the object by the order of inserting: 
    " 
    { 
     "31":"123", 
     "23":"456" 
    } 
    " 

如何這樣做?

回答

1

無法計算JavaScript對象以維護訂單。你可能會希望使用數組來代替,這將保存索引順序。

在第一線只要改變{}[]

var objJSON = []; 
0

當你需要一個數組時,你正在使用一個對象(它可以被認爲是一個「map」)。對象不保證順序。如果你發生什麼事以後添加另一個屬性?它也會歪曲訂單。嘗試使用對象的數組/列表/載體代替。例如:

var array = []; 
array[0] = { 31: '123' }; 
array[1] = { 23: '456' }; 
3

一個對象的屬性沒有保證的順序。如果密鑰,價值位置是非常重要的,我會推薦對象的數組來代替:

var x = []; 
x.push({ 
    key: 23, 
    value: '123' 
}); 
x.push({ 
    key: 31, 
    value: '456' 
}); 

JSON.stringify(x); // [{"key":23,"value":"123"},{"key":31,"value":"456"}] 
-1

你需要把該鍵值對數組中的等你拿

{ 
    "array": ["31":"123", "23":"456"] 
} 
0

試試這個:

var objList = []; 
objList.push({"31" : "123"}); 
objList.push({"23" : "456"}); 
alert(JSON.stringify(objList));