在jQuery中获取和排序JSON数组

时间:2014-12-11 15:56:07

标签: jquery arrays json sorting

我已经在这里阅读了所有相关的问题,但似乎没有什么对我有用。我正在尝试从.json文件中获取信息,并按最近的日期对其进行排序,然后显示与该事件相关的所有信息。

events.json

[
 {
  "title":"Event 1",
  "start": "2014-12-06T09:00:00"
 },{
  "title":"Event 2",
  "start": "2014-12-11T09:00:00"
 },{
  "title":"Event 3",
  "start": "2014-12-13T10:00:00"
 }
]

的jQuery

$.getJSON( "events/events.json", function(data){
    var array = $.map(data, function (item, index) {
    console.log([item.title, item.start]);
    });
});

而不是像我预期的那样,在控制台中显示Array [3](然后是事件,开始日期),它显示了我

["Event 1", "2014-12-06T09:00:00"]
["Event 2", "2014-12-11T09:00:00"]
["Event 3", "2014-12-13T10:00:00"]

我哪里错了?

编辑:感谢目前为止提供的所有帮助,但我想我对自己所追求的内容并不十分清楚。我想要显示数据

Array[3]
  {"Event 1", "2014-12-06T09:00:00"}
  {"Event 2", "2014-12-11T09:00:00"}
  {"Event 2", "2014-12-13T10:00:00"}

这样我就可以按日期对数组进行排序,如果它们都在子数组中,或者它们自己的数组,我就无法将它们相互排序(或者如果我可以,我不知道如何,也没有知道你可以!)

3 个答案:

答案 0 :(得分:1)

jQuery map函数有两个参数。索引和项目。指数排在第一位。

你想要一个数组数组。每个内部数组都有两个值。

所以写

$.getJSON( "events/events.json", function(data){
    var vals = [];
    var array = $.map(data, function (index, item) {
        vals.push([item.title, item.start]);
    });
    console.log(vals);
});

请参阅here

答案 1 :(得分:1)

如果我理解得很好,你只想显示一个由3个元组组成的数组,而不是三个数组。

var parentArray = [];
$.getJSON( "events/events.json", function(data){
    $.map(data, function (item, index) {
        parentArray.push( { 'title': item.title, 'start': item.start } );
    });
});
console.log(parentArray);

您的结果将是:

[
    { 'title': 'Event 1', 'start': '2014-12-06T09:00:00' },
    { 'title': 'Event 2', 'start': '2014-12-11T09:00:00' },
    { 'title': 'Event 3', 'start': '2014-12-13T10:00:00' }
]

答案 2 :(得分:0)

使用underscore sortBy并执行类似

的操作
$.getJSON( "events/events.json", function(data){
    var now = new Date();
    var sortedArray  = _.sortBy(data, function (item) {
            return CALCULATEDIFFBETWEENDATES(now,item.start);
        });
});