Javascript 使用新键对JSON重新排序
我有一个从rest服务返回的大JSON,我需要在使用它之前对它进行排序 示例行:Javascript 使用新键对JSON重新排序,javascript,json,Javascript,Json,我有一个从rest服务返回的大JSON,我需要在使用它之前对它进行排序 示例行: [{"Time":"1354233600000","Name":"NAN","TagValue":"0","TagValue2":"0"}, {"Time":"1354234500000","Name":"NAN","TagValue":"0","TagValue2":"0.0020288255172466159"}, {"Time":"1354235400000","Name":"NAN","TagValue":
[{"Time":"1354233600000","Name":"NAN","TagValue":"0","TagValue2":"0"},
{"Time":"1354234500000","Name":"NAN","TagValue":"0","TagValue2":"0.0020288255172466159"},
{"Time":"1354235400000","Name":"NAN","TagValue":"0","TagValue2":"0.0022446943714048121"},
{"Time":"1354236300000","Name":"NAN","TagValue":"0","TagValue2":"0.00014998416164500384"},
{"Time":"1354237200000","Name":"NAN","TagValue":"0","TagValue2":"0"},
{"Time":"1354238100000","Name":"NAN","TagValue":"0","TagValue2":"0.00015631034628383933"},
{"Time":"1354239000000","Name":"NAN","TagValue":"0","TagValue2":"1.1165024734559951E-05"}
像这样的线路大约有2000条。我想按时间对它们进行分类,得到如下结果:
var restData = { "1354234500000":[
{"Name":"NaN",
"TagValue":"0",
"TagValue2":"someFloat"}
{"Name:"NAN,
"TagValue":"0",
"TagVale":"0"}
],
"aNewUnixTimeStamp":[
{..........}
]};
是否有一些神奇的javascript函数可以用来实现这一点?假设您的对象都整齐地组织在一个数组中,您只需调用
bigArray.sort(function(a,b) {return a.Time < b.Time ? -1 : 1})
bigArray.sort(函数(a,b){返回a.Time
您也可以从jquery使用此pligin
您应该知道,由于结果是使用时间戳作为对象的键,您将无法对它们进行排序,因为对象没有定义的顺序
另外,
.reduce()
将需要为较旧的浏览器安装垫片。你可以用这个。你将要写的这个可能很神奇。被问了很多次,回答了很多次,例如:看起来你正在尝试按键排序:@gview这不是排序,这更像是按属性对对象进行分组。我发布了一个答案,应该会解决这个问题。试试看。-1因为加载一个大的DOM操作库(和插件)是愚蠢的只做简单的对象操作。@user1689607大约有2000行数据hmmmm可能是简单的对象操作,但有大量数据,何不使用其中的一些东西来为您执行任务加载jQuery不会使这些2000行中的任何一行消失。使用广义抽象只会减慢速度。为什么除非您编写自己的排序,否则您仍然使用设计的函数,看不到您想要证明的任何一点?为特定任务编写的代码通常会优于为处理更大范围的广义任务而编写的代码。无论如何,性能是次要的。仅仅为了进行简单排序而加载大型DOM操纵库是没有意义的。你想知道投票的原因,我已经详细解释了。如果你现在还不明白,我也帮不了你。这里面的delete obj.Time
是干什么的?否则很简单。。。。没有关系。我看到了。
$(dataSet).sort("Time", "asc");
var myarray = [{"Time":"1354233600000","Name":"NAN","TagValue":"0","TagValue2":"0"},
{"Time":"1354234500000","Name":"NAN","TagValue":"0","TagValue2":"0.0020288255172466159"},
{"Time":"1354235400000","Name":"NAN","TagValue":"0","TagValue2":"0.0022446943714048121"},
{"Time":"1354236300000","Name":"NAN","TagValue":"0","TagValue2":"0.00014998416164500384"},
{"Time":"1354237200000","Name":"NAN","TagValue":"0","TagValue2":"0"},
{"Time":"1354238100000","Name":"NAN","TagValue":"0","TagValue2":"0.00015631034628383933"},
{"Time":"1354239000000","Name":"NAN","TagValue":"0","TagValue2":"1.1165024734559951E-05"}
var result = myarray.reduce(function(res, obj) {
if (res.hasOwnProperty(obj.Time) === false) {
res[obj.Time] = [];
}
res[obj.Time].push(obj);
delete obj.Time;
return res;
}, {});