0

我正在玩 javascript 中的 json 对象,想看看是否有人可以帮助我解决问题

我的 json 文件包含一个哈希对象列表,其中包含一个键 (id) 和值是 [ipaddress, timestamp, url] 的数组

例如

{"output":
    {
    "1":["10.0.0.1","2012-07-11T11:41:42+01:00","http://myurl.com"],
    "2":["10.0.0.1","2012-07-11T11:45:42+01:00","http://myurl2.com"],
    "3":["192.168.1.1","2012-07-11T11:41:47+01:00","http://myurl3.com"]
    }
}

我想要做的是能够对数组的内容进行排序

例如,我想通过 json 并提取每个 ip 地址的最高时间戳

因此,上面 json 的示例输出如下所示:-

10.0.0.1 - http://myurl2.com
192.168.1.1 - http://myurl3.com

目前我有一个简单的函数可以在 div 中输出原始数据,但我确信我可以更好地处理数组

  var displayOutput = function(data){
    var container = $("#fragment-1");
   var body = “”;
    $.each(data.output, function(key, val) {
      var arr = val.toString().split(",");
      body = body + arr[0]+ ' - ' +  arr[1]) + ' - ' +  arr[2]
    });
    container.html(body);                                                
  };
4

2 回答 2

0

您需要将格式更改为 JSON,以便于排序。

也许是一个多维数组?

也许这可能会有所帮助:对 JavaScript 对象数组进行排序

或者这个: http: //www.devcurry.com/2010/05/sorting-json-array.html

或者这样:在 Javascript 中对 JSON 对象进行排序

其中之一肯定会导致一个好的解决方案。需要任何帮助询问:)

于 2012-07-25T13:45:40.253 回答
0

您可以使用 underscore.js 库。例如,您可以使用以下命令对集合进行排序:

_.sortBy(yourData.output, function (elem) {
    return new Date(elem[1]).getTime() - new Date().getTime();
});

当然,您需要先将 JSON 解析为 JavaScript 对象。

于 2012-07-25T13:54:08.873 回答