Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
尝试在Javascript中对我的json中的项目进行排序_Javascript_Json_Sorting - Fatal编程技术网

尝试在Javascript中对我的json中的项目进行排序

尝试在Javascript中对我的json中的项目进行排序,javascript,json,sorting,Javascript,Json,Sorting,我有一个JSON字符串,我用json2.js库将其解析为JSON对象 var parsed = JSON.parse(jsonstring); 之后,我做了一些魔术来向用户展示这些数据。包含的数据是多条消息。在所有浏览器中,它们都按正确的顺序排序。然而,在IE9中,顺序是相反的。从旧邮件到新邮件,而不是先发送新邮件 我了解到解析结果的顺序不是固定的,取决于JavaScript版本。所以我试着按我想要的方式对这些项目进行排序,但它不起作用 我目前: var parsed = JSON.parse

我有一个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));
        });
}
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”},…}