根据JSON Response中的时间戳值对数组进行排序

我在我的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函数,但它只按字母顺序对月份进行排序。 请帮我找到解决方案。

提前致谢。

你可以定义插入排序,它在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); 
 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);