2010-12-07 52 views
3
[ 
    {"task":"test","created":"/Date(1291676980607)/"}, 
    {"task":"One More Big Test","created":"/Date(1291677246057)/"}, 
    {"task":"New Task","created":"/Date(1291747764564)/"} 
] 

我看着這裏,有人有同樣的問題,但「檢查」的正確答案是,如果該項目被刪除,它將是不同的IE,這將是很好。我的問題是,上述這些項目是存儲的,但是當我去抓住它們,重複並返回時,項目被逆轉,並且created位於0索引處,而task位於1。另外,我需要將它作爲JSON返回。如何在JavaScript中反轉JSON?

這是我的基本JS(值==一個INT用戶正在傳遞):

outputJSON = {}; 
for(x in json[value]){ 
    outputJSON[x] = _objectRevival(json[value][x]); 
} 
return outputJSON; 

返回:

created: Mon Dec 06 2010 15:09:40 GMT-0800 (Pacific Standard Time) 
task: "test" 

回答

4

的對象的屬性的順序是未定義。不可能以特定的順序強制他們。如果你需要他們在一個特定的順序,可以可靠地建立這個結構使用數組:

var values = [ 
    [["task", "test"],    ["created", "/Date(1291676980607)/"]], 
    [["task", "One More Big Test"], ["created", "/Date(1291677246057)/"]], 
    [["task", "New Task"],   ["created", "/Date(1291747764564)/"]] 
]; 

然後你就可以遍歷您的結構是這樣的:

for (var i = 0; i < values.length; i++) { 
    for (var k = 0; k < values[i]; k++) { 
     // values[i][k][0] contains the label (index 0) 
     // values[i][k][1] contains the value (index 1) 
    } 
} 
+0

如果您需要訂購,您將不得不以不同的方式存儲數據,例如作爲兩元素數組的數組或鍵/值對對象的數組。 – 2010-12-07 20:56:50

+0

@Matti Virkkunen:我解決了這裏有點不同,以節省內存。 – jwueller 2010-12-07 21:13:07

0

的問題是,JavaScript對象別以特定的順序存儲它們的屬性。另一方面數組(因此爲什麼你可以從json [0],json [1],json [2]獲得一致的東西)。

如果你的對象總是有「任務」和「創建」,那麼你可以按照你想要的任何順序獲得它們。

json[value]["task"] 

json[value]["created"] 

更新: 這應該與您現有的代碼工作。 在發送json對象之前:

var before = [ 
    {"task":"test","created":"/Date(1291676980607)/"}, 
    {"task":"One More Big Test","created":"/Date(1291677246057)/"}, 
    {"task":"New Task","created":"/Date(1291747764564)/"} 
]; 
var order = []; 
for (var name in before[0]) { 
    order.push(name); // puts "task", then "created" into order (for this example) 
} 

然後將您的json關閉到服務器。後來,當你從服務器取回數據:

var outputJSON = {}; 
for (var x in order) { 
    if (order.hasOwnProperty(x)) { 
     outputJSON[order[x]] = _objectRevival(json[value][order[x]]); // I'm not sure what _objectRevival is...do you need it? 
    } 
} 
return outputJSON; 
0

要執行一個特定的順序爲您的輸出只是在爲了要顯示他們的對象屬性的陣列替換json[value]for循環中,你的情況["task", "created"]

0
var items = ["bag", "book", "pen", "car"]; 
items.reverse(); 

這將導致以下的輸出:

car , pen, book, bag 

即使你有JSON數組會逆轉。