我怎样才能调整这个。当getJSON返回按日期排序的结果时?

更新:看起来我们正在寻求赏金。 第一次对我来说。

我的目标是调整此代码以按日期排序。

代码示例

$.when( $.getJSON(url0), $.getJSON(url1), $.getJSON(url2), $.getJSON(url3),$.getJSON(url4), $.getJSON(url5),$.getJSON(url6),$.getJSON(url7) ).done( function() { $.each(arguments, function(index, result) { var data = result[0]; utcday = data[0].createdOn; ltrDay = moment.utc(utcday).format("DD MMM YY"); console.log(ltrDay); }); }); 

此代码返回我正在调用的getJSON url排序的结果。

在大多数情况下,这是理想的行为。

但是,我现在需要返回按日期排序的结果,以用于其他情况(降序,最新的第一个)。

你有结果在你的内部,现在你只需要使用标准排序function排序。

 $.when( $.getJSON(url0), $.getJSON(url1), $.getJSON(url2), $.getJSON(url3),$.getJSON(url4), $.getJSON(url5),$.getJSON(url6),$.getJSON(url7) ).done( function() { var results = args = Array.prototype.slice.call(arguments); args.sort(function(a, b) { return a[0][0].createdOn - b[0][0].createdOn; }); // use sorted args now, args are the results console.log(results); // assuming a modern browser and using forEach results.forEach(function(result) { console.log(result[0][0].createdOn); }); }); 

也许我错过了什么? 但是您应该能够使用现在应该由createdOn属性排序的结果。 我假设你的createdOn属性已经是一个日期对象。

确保你echo json_encode($assocArray)正确的JSON ,它将进入你在下面看到的data参数。 这样,当它们完成时, $.when()之上的变量将拥有我认为你想要的data作为arguments Array Like Object。

 var u0, u1, u2, u3, u4, u5, u6, u7; $.when($.getJSON(url0, function(data){u0 = data}), $.getJSON(url1, function(data){u1 = data}), $.getJSON(url2, function(data){u2 = data}), $.getJSON(url3, function(data){u3 = data}), $.getJSON(url4, function(data){u4 = data}), $.getJSON(url5, function(data){u5 = data}), $.getJSON(url6, function(data){u6 = data}), $.getJSON(url7, function(data){u7 = data})).done(function(){ var arrayOfObjects = []; $.each([u0, u1, u2, u3, u4, u5, u6, u7], function(index, result){ var rz = result[0]; arrayOfObjects.push({data:rz, utcday:rz.data[0].createdOn, ltrDay:moment.utc(utcday).format('DD MM YY')}); }); function youMakeIt(aryObs){ var dateArray = []; $.each(aryObs, function(i, v){ dateArray.push(v.ltrDay); }); /* now you do your thing with `dateArray` putting the array of indexes in an `indexes` variable to get the `arrayOfObjects` in the order you like Next its like */ var solution = []; $.each(indexes, function(i, v){ solution.push(dateArray[v]); }); // solution Array holds the order you want for your Objects return solution; } var newArrayOfObjects = youMakeIt(arrayOfObjects); }); 

除非您向其提出请求的URL提供JSON接受参数以按日期排序,否则您必须在获得所有数据后执行此操作。 这样的事情应该有效

 var date_sort_desc = function (date1, date2) { if (date1 > date2) return -1; if (date1 < date2) return 1; return 0; }; var dates = []; $.when( $.getJSON(url0), $.getJSON(url1), ... ).done( function() { $.each(arguments, function (index, result) { var data = result[0]; var utcday = data[0].createdOn; dates.push(moment.utc(utcday).format("YY MM DD")); }); dates.sort(date_sort_desc); });