使用javascript访问和排序json中的数组对象

时间:2012-07-25 13:35:42

标签: javascript json

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

我的json文件包含一个包含键(id)的哈希对象列表,值为[ipaddress,timestamp,url]

的数组

e.g。

{"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);                                                
  };

2 个答案:

答案 0 :(得分:0)

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

也许是一个多维数组?

也许这可能会有所帮助:Sorting an array of JavaScript objects

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

或者:Sorting a JSON object in Javascript

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

答案 1 :(得分:0)

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

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

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