Javascript 根据JSON响应中的时间戳值对数组进行排序
我在json响应中有时间戳值,并且能够正确解析该值。 每个图像都有自己的时间戳值,我需要以不断增加的时间戳值显示它。这意味着最后更新的图像应该首先加载到我的应用程序中 时间戳在JSON响应中采用以下格式:Javascript 根据JSON响应中的时间戳值对数组进行排序,javascript,jquery,html,sorting,timestamp,Javascript,Jquery,Html,Sorting,Timestamp,我在json响应中有时间戳值,并且能够正确解析该值。 每个图像都有自己的时间戳值,我需要以不断增加的时间戳值显示它。这意味着最后更新的图像应该首先加载到我的应用程序中 时间戳在JSON响应中采用以下格式: Brand1{ "FileName": "520120427043622011.jpg", "UpdateTimeStamp": "Jun 10, 2013 8:31:23 AM" } Brand2{ "FileName": "Kung_Fu_Fingers.jpg", "UpdateTi
Brand1{
"FileName": "520120427043622011.jpg",
"UpdateTimeStamp": "Jun 10, 2013 8:31:23 AM"
}
Brand2{
"FileName": "Kung_Fu_Fingers.jpg",
"UpdateTimeStamp": "Jun 5, 2013 6:51:12 AM"
}
Brand3{
"FileName": "google_logo1.jpg",
"UpdateTimeStamp": "Jun 10, 2013 8:31:23 AM"
}
任何人都可以指导我使用Javascript或jQuery函数根据时间戳值对上述三个品牌图像项进行排序。
我在分割dat值后使用了排序函数,但它只是按字母顺序对月份进行排序。
请帮我找到解决办法
提前谢谢
var files = [{
"FileName": "520120427043622011.jpg",
"UpdateTimeStamp": "Jun 10, 2013 8:31:23 AM"
},{
"FileName": "Kung_Fu_Fingers.jpg",
"UpdateTimeStamp": "Jun 5, 2013 6:51:12 AM"
},{
"FileName": "google_logo1.jpg",
"UpdateTimeStamp": "Jun 10, 2013 8:31:23 AM"
}];
files.sort(function(a, b){
var d1 = new Date(a.UpdateTimeStamp);
var d2 = new Date(b.UpdateTimeStamp);
return d1-d2; // d2-d1 for descending order
});
编辑:
用于时间戳数组
var updateTimeStamps = ["Aug 10, 2013 8:31:23 AM","Jun 5, 2013 6:51:12 AM" ,"May 10, 2013 8:31:23 AM"];
updateTimeStamps.sort(function(a, b){
var d1 = new Date(a);
var d2 = new Date(b);
return d1-d2; // d2-d1 for descending order
});
console.log(updateTimeStamps);
编辑2:
用于保留两个数组和排序
var imgs = ["img1", "img2", "img3"];
var times = ["Jul 10, 2013 8:31:23 AM","Jan 5, 2013 6:51:12 AM" ,"Feb 10, 2013 8:31:23 AM"];
var sorting = [];
times.sort(function(a, b){
var d1 = new Date(a);
var d2 = new Date(b);
var d = d1-d2; // d2-d1 for descending order
sorting.push(d);
return d;
});
imgs.sort(function(a, b){
return sorting.shift();
});
console.log(times);
console.log(imgs);
您可以定义插入排序,该排序在O(n)时间内执行(最佳情况下,数组已排序),而O(n^2)数组未排序(最坏情况):
函数插入排序(文件、属性排序){
for(var k=1;k0和新日期(文件[i][attrToSortBy])<
新日期(文件[i-1][attrToSortBy]);i--{
var tmpFile=文件[i];
文件[i]=文件[i-1];
文件[i-1]=tmpFile;
}
}
}
变量文件=[{
“文件名”:“520120427043622011.jpg”,
“UpdateTimeStamp”:“2013年6月10日上午8:31:23”
},{
“文件名”:“Kung_Fu_Fingers.jpg”,
“UpdateTimeStamp”:“2013年6月5日上午6:51:12”
},{
“文件名”:“google_logo1.jpg”,
“UpdateTimeStamp”:“2013年6月12日上午8:31:23”
}];
insertionSort(文件,“UpdateTimeStamp”);
log('files:',files);
这是一个数组吗?。请共享完整的JSON。{“FileName”:“520120427043622011.jpg”,“FileUrl”:“MimeType”:“image/jpeg”,“TagName”:“my_thumb”,“FileLength”:“243319”,“FileDescription”:“test”,“UpdateTimeStamp”:“Jun 10,2013 7:33:02 AM”},我能够解析响应。对于基于时间戳值的排序,我需要帮助。我已将时间戳值存储在数组中。需要对包含时间戳值的数组进行排序。回调({“Brands”:[[[{“FileName”:“520120427043622011.jpg”,“UpdateTimeStamp”:“Jun 10,2013 8:31:23 AM”},{“FileName”:“Kung_Fu Fingers.jpg”,“UpdateTimeStamp”:“2013年6月5日上午6:51:12”},{“文件名”:“google_logo1.jpg”,“UpdateTimeStamp”:“2013年6月10日上午8:31:23”};})我以前试过上面的代码,它只会按字母顺序返回。例如:8月,6月,可能是wise,而不是基于上面的响应。你能解释一下你正在使用的令牌吗。我需要在代码中使用的所有值是什么。我已经将时间戳数据存储在updatetimestamp数组中。在上面的代码中,文件的值是什么s、 a,b?我需要对数组-updatetimestamp进行排序,该数组包含获取的时间戳值。请共享一个示例数组。当我放置警报(文件)时,该数组还将以[object object]值的形式返回文件;如何获取文件中的值。我可以使用相同的时间戳值顺序对另外两个数组进行排序吗?此排序算法可用于数组、对象和所有其他数据结构。
function insertionSort(files,attrToSortBy){
for(var k=1; k < files.length; k++){
for(var i=k; i > 0 && new Date(files[i][attrToSortBy]) <
new Date(files[i-1][attrToSortBy]); i--){
var tmpFile = files[i];
files[i] = files[i-1];
files[i-1] = tmpFile;
}
}
}
var files = [{
"FileName": "520120427043622011.jpg",
"UpdateTimeStamp": "Jun 10, 2013 8:31:23 AM"
},{
"FileName": "Kung_Fu_Fingers.jpg",
"UpdateTimeStamp": "Jun 5, 2013 6:51:12 AM"
},{
"FileName": "google_logo1.jpg",
"UpdateTimeStamp": "Jun 12, 2013 8:31:23 AM"
}];
insertionSort(files,"UpdateTimeStamp");
console.log('files: ',files);