Json响应(对象)
[{"id":"9","title":"Testing","date":"2014-02-17","time":"40"},
{"id":"19","title":"11111111","date":"2014-02-24","time":"20"},
{"id":"33","title":"Testing","date":"2014-02-26","time":"23"},
{"id":"64","title":"2:00pm","date":"2014-03-18","time":"29"},
{"id":"65","title":"4:00pm","date":"2014-03-18","time":"33"}]
以上是json对象,用于显示事件日历中的事件名称和时间。事件名称和时间在日历中正确显示。问题是事件未按时间升序显示。
我需要按升序排序Json响应。
是否可以按上述方式对Json对象进行排序。
答案 0 :(得分:1)
array.sort方法应该使用自定义函数进行比较。例如:
function sortObjects(a, b) {
return (+a.time) - (+b.time);
}
jsonObject.array.sort(sortObjects);
我使用(+ a.time)而不仅仅是a.time,因为你的例子显示了用引号括起来的时间值,使它们成为字符串。 +会将其转换为数字。
答案 1 :(得分:1)
你用PHP标记,所以一种方法:
$array = json_decode($json);
foreach($array as $key => $object) {
$time[$key] = $object->time;
}
array_multisort($time, SORT_ASC, $array);
print_r($array);
答案 2 :(得分:0)
您可以拥有自己的自定义比较器函数,并在数组中调用sort传递此函数
示例:
arr.sort(function(a,b){
var f =a.start.split("/");
var t =b.start.split("/");
var x =parseInt(f[2]+f[1]+f[0]);
var y =parseInt(t[2]+t[1]+t[0]);
return a - b;
});
您需要此自定义比较器功能,因为javascript不知道您的对象规则。所以你需要告诉它如何比较你的对象。