Javascript 我如何调整它。什么时候getJSON返回按日期排序的结果?
更新:看来我们要去赏金了。这是我第一次 我的目标是调整这段代码,以获得按日期排序的结果 代码示例Javascript 我如何调整它。什么时候getJSON返回按日期排序的结果?,javascript,jquery,getjson,Javascript,Jquery,Getjson,更新:看来我们要去赏金了。这是我第一次 我的目标是调整这段代码,以获得按日期排序的结果 代码示例 $.when( $.getJSON(url0), $.getJSON(url1), $.getJSON(url2), $.getJSON(url3),$.getJSON(url4), $.getJSON(url5),$.getJSON(url6),$.getJSON(url7) ).done( function() { $.each(arguments, function(index, r
$.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排序的结果
在大多数情况下,这是理想的行为
但是,对于其他情况,我现在也需要返回按日期排序的结果(降序,最新优先)。除非您请求提供JSON accept参数以按日期排序的URL,否则您必须在获得所有数据后执行此操作。像这样的东西应该有用
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);
});
var date\u sort\u desc=函数(date1,date2){
如果(date1>date2)返回-1;
如果(日期1<日期2)返回1;
返回0;
};
var日期=[];
$.when($.getJSON(url0),$.getJSON(url1),…).done(函数(){
$.each(参数、函数(索引、结果){
var数据=结果[0];
var utcday=data[0]。createdOn;
推送日期(utc时间(utcday)格式(“YY-MM-DD”);
});
dates.sort(date\u sort\u desc);
});
确保echo json\u encode($assocaray)
正确的json
,它将进入下面看到的数据
参数中。这样,当它们完成时,上面的变量$。when()
将具有数据
我相信您想要作为参数
类似数组的对象
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);
});
当时,
中包含了结果,现在只需使用标准排序函数进行排序
$.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属性已经是日期对象。相关:@Vohuman谢谢。我尝试了各种方法,但都没有成功。这就是为什么我要问具体的背景。我希望有人能给我一个具体的代码示例。这是什么moment.utc(utcday).format(“DD-MMM-YY”)代码>?矩是一个用于时间操纵的JS库。@PHPglue我正在用实际结果做很多事情。代码示例仅显示返回无序结果的console.log。这样我就可以快速检查答案了。Moment是一个带有时间戳的很酷的库。谢谢,我可以看到它是如何处理单个日期的,但我也需要使用许多其他返回的JSON位。希望你理解我的意思。您的解决方案获得了日期,但我需要使用JSON请求中返回的其他信息。您的解决方案创建了一个新工件,该工件已正确订购,但只包含日期。我不知道如何包括其他的东西。谢谢你的帮助。在此处引发“未捕获的TypeError:无法读取未定义的属性“0”错误:arrayOfObjects.push({data:rz,utcday:rz.data[0].createdOn,ltrDay:moment.utc(utcday).format('DD-MM-YY')});没有快乐。仔细检查我这边的所有内容。真正的问题是,参数
是一个类似数组的对象,用于.done(函数(/*really here*/){})
匿名函数。也许您需要将所有$.getJSON()
查询放入一个数组中。谢谢您的帮助。一切都准备好了。谢谢,但我还是不明白。也许我把你的密码放错地方了。请您将其与我的示例相匹配好吗?createdOn是一个时间戳:“createdOn:1414179586293”我不清楚在哪里放置块。这就是为什么我要尝试匹配我的示例,以便查看它是否有效。它返回以下内容:[Array[3],Array[3],Array[3],Array[3],Array[3],Array[3],Array[3],Array[3]
,我不知道如何提取所需的内容。例如,我如何显示和查看createdOn的顺序是否正确?@user1452893如果您使用的是chrome或firefox,您应该能够在控制台中检查每个数组的日志记录,但我包括了一个forEach循环,只打印createdOn
属性。啊哈!结果[0][0]谢谢。这应该让我进入下一步。我需要做其他调整,但这看起来像是照顾订购位。