Javascript 根据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

我在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值后使用了排序函数,但它只是按字母顺序对月份进行排序。 请帮我找到解决办法

提前谢谢

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);