尝试在Javascript中对我的json中的项目进行排序
我有一个JSON字符串,我用json2.js库将其解析为JSON对象尝试在Javascript中对我的json中的项目进行排序,javascript,json,sorting,Javascript,Json,Sorting,我有一个JSON字符串,我用json2.js库将其解析为JSON对象 var parsed = JSON.parse(jsonstring); 之后,我做了一些魔术来向用户展示这些数据。包含的数据是多条消息。在所有浏览器中,它们都按正确的顺序排序。然而,在IE9中,顺序是相反的。从旧邮件到新邮件,而不是先发送新邮件 我了解到解析结果的顺序不是固定的,取决于JavaScript版本。所以我试着按我想要的方式对这些项目进行排序,但它不起作用 我目前: var parsed = JSON.parse
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));
});
}
var parsed=JSON.parse(提要);
parsed=sortJSON(已解析为“已创建”);
函数sortJSON(数据,键){
返回数据。排序(函数(a,b){
变量x=a[key];变量y=b[key];
回报率((xy)?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>
}
{”“:{“文本”:“…”、“用户”:“…”、“创建”:“,
“主题”:“url”:“img_类”:“}”,
“”:{“文本”:“…”、“用户”:“…”、“已创建”:“主题”:“,
“url”:“…”,“img_类”:“…”},
}
只能排序数组
,不能排序对象
。排序时不能保证收到已排序的对象
看看这个答案,一个有效的解决方案
排序
只对数组有效,因为您的对象是散列,所以您可以这样做:
var items = [];
for (var k in data) {
items.push({
id: k,
original: data[k]
});
}
items.sort(...);
对象不是数组。特别是,对象是无序的。与其将结果作为单个JSON对象返回,不如将其作为数组返回。也就是说,服务器响应看起来像
[{“foo”},{“goo”},…]
而不是{{“foo”},{“goo”},…}