javascriptjqueryhtmlsortingtimestamp

Sorting an array based on time stamp value from JSON Response


I'm having timestamp value in my json response and is able to parse that value properly. Each image is having its own timestamp value and I need to display it in the increasing timestamp value. That means the last updated image should be loaded first in my application.

The timestamp is in the following format in the JSON Response :

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"
}

Can any one please guide me to sort the above three brands images item based on the timestamp value using Javascript or jQuery functions. I have used sort function after spliting the date value, but it is sorting the months in alphabetical order only. Please help me out in finding a solution for this.

Thanks in advance.


Solution

  • you can define insertion-sort, that executes in O(n)-time (best-case, array is sorted), and O(n^2) array is not sorted (worst case):

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