2013-05-06 40 views
0

我有一個JSON字符串,我使用json2.js庫解析爲JSON對象。試圖在JavaScript中對我的json中的項目進行排序

var parsed = JSON.parse(jsonstring); 

後來我做了一些神奇的事情,向用戶顯示數據。包含的數據是幾條消息。在所有瀏覽器中,它們按正確的順序排序。但是在IE9中,順序是相反的。從舊消息到新消息,而不是先發送新消息。

我讀過,解析結果的順序不固定,取決於JavaScript版本。所以我試圖按照我想要的方式對項目進行排序,但它不起作用。

我目前做的:

var parsed = JSON.parse(feeds); 
parsed = sortJSON(parsed, "created"); 

function sortJSON(data, key) { 
    return data.sort(function(a, b) { 
      var x = a[key]; var y = b[key]; 
      return ((x < y) ? -1 : ((x > y) ? 1 : 0)); 
     }); 
} 

但我在控制檯中出現以下錯誤:

對象不支持屬性或方法 '排序'

所以我猜測是由於JSON對象的結構,我的排序方法不正確。所以問題是'我需要改變我的排序方法,以便它的工作?

我的JSON字符串的結構:

{"<ID>":{"text":"...","user":"...","created":"<date>", 
"subject":"","url":"...","img_class":".."}, 

"<ID>":{"text":"...","user":"...","created":"<date>","subject":"", 
"url":"...","img_class":"..."}, <MORE MESSAGES> 
} 
+4

對象是不是數組。特別是,對象是無序的。 – SLaks 2013-05-06 13:56:45

+2

不是將結果作爲單個JSON對象返回,而是將它們作爲數組返回。也就是說,服務器響應看起來像'[{「foo」},{「goo」},...]'而不是'{{「foo」},{「goo」},...} – Bucket 2013-05-06 13:57:41

回答

0

sort僅適用於數組和因爲你的對象是一個哈希,你可以做這樣的事情,而不是:

var items = []; 
for (var k in data) { 
    items.push({ 
     id: k, 
     original: data[k] 
    }); 
} 
items.sort(...); 
相關問題