Javascript 按升序对JSON对象排序

Javascript 按升序对JSON对象排序,javascript,jquery,json,Javascript,Jquery,Json,Json响应(对象) 上面是在事件日历中显示事件名称和时间的json对象。事件名称和时间在日历中正确显示。问题是事件没有按时间升序显示 我需要按升序排列Json响应 是否可以按上述方式对Json对象进行排序。array.sort方法应使用自定义函数进行比较。例如: function sortObjects(a, b) { return (+a.time) - (+b.time); } jsonObject.array.sort(sortObjects); 我使用(+a.time)而不

Json响应(对象)

上面是在事件日历中显示事件名称和时间的json对象。事件名称和时间在日历中正确显示。问题是事件没有按时间升序显示

我需要按升序排列Json响应


是否可以按上述方式对Json对象进行排序。

array.sort方法应使用自定义函数进行比较。例如:

function sortObjects(a, b) {
    return (+a.time) - (+b.time);
}

jsonObject.array.sort(sortObjects);

我使用(+a.time)而不仅仅是a.time,因为您的示例显示了用引号包装的时间值,使它们成为字符串。+会将其转换为一个数字。

您在PHP中标记了它,因此有一种方法:

$array = json_decode($json);

foreach($array as $key => $object) {
    $time[$key] = $object->time;
}
array_multisort($time, SORT_ASC, $array);    

print_r($array);

您可以拥有自己的自定义比较器函数,并在数组中通过该函数调用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不知道您的对象规则。因此,您需要告诉它如何比较您的对象。

您是否尝试过使用Javascript
sort()
方法?请告诉我为什么我们需要编写自定义函数来进行比较,因为您比较的是json对象内部的属性,而不是整个对象本身。这将导致sort只查看time属性,这就是我要做的,只是我可能会在sort()调用中内联sortObjects方法。我想,这取决于您是否需要它。请注意,
+
在这里实际上是不必要的。
-
将强制执行类型强制。因此,尽管它可能不太明确,但这也有点简单:
返回a.time-b.time@user2681579:按字面意思包含David的函数。不要试图在函数中引入这一额外的行:
=json_encode()上下,有什么解释吗?我从他的问题中删除了php标记。不知道为什么你会被否决,因为OP标记了php,但只处理了基于javascript的答案。然而他可以在1/2秒内重写这个,以按时间排序,而不是按开始排序,但他没有。除了我,其他人对这不感兴趣吗?懒惰的人问的问题是谁只有足够的野心去复制/粘贴。@skrilled:同意,但我很无聊;-)@user2681579:您需要解码实际的json并使用该数组,或者使用原始的
$event\u列表
  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;
    });