我有一个JSON字符串,我用json2.js库解析为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));
});
}
但是我在控制台中收到以下错误:
对象不支持属性或方法'sort'
所以我的猜测是因为JSON对象的结构,我的排序方法不正确。所以问题是'我需要在排序方法中改变什么才能使其有效?
我的json字符串的结构:
{"<ID>":{"text":"...","user":"...","created":"<date>",
"subject":"","url":"...","img_class":".."},
"<ID>":{"text":"...","user":"...","created":"<date>","subject":"",
"url":"...","img_class":"..."}, <MORE MESSAGES>
}
答案 0 :(得分:0)
只能对Array
进行排序,而不是Object
。您无法保证在对其进行排序时收到有序对象。
查看有关正常工作解决方案的答案Sorting JavaScript Object by property value
答案 1 :(得分:0)
sort
仅适用于数组,因为你的对象是哈希,你可以这样做:
var items = [];
for (var k in data) {
items.push({
id: k,
original: data[k]
});
}
items.sort(...);