我在json响应中有时间戳值,并且能够正确解析该值。 每个图像都有自己的时间戳值,我需要在增加的时间戳值中显示它。这意味着应该首先在我的应用程序中加载最后更新的图像。
时间戳在JSON响应中采用以下格式:
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值后使用了sort函数,但它只按字母顺序对月份进行排序。 请帮助我找到解决方案。
提前致谢。
答案 0 :(得分:4)
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);
答案 1 :(得分:3)
你可以定义insert-sort,它在O(n)-time中执行(最好的情况是,数组是排序的),而O(n ^ 2)数组没有排序(最坏的情况):
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);