3

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.

3
  • Is this coming in an array ?. Please share complete JSON. Commented Jun 10, 2013 at 14:45
  • { "FileName": "520120427043622011.jpg", "FileUrl": "myserver.com/files/basic/anonymous/api/library/…", "MimeType": "image/jpeg", "TagName": "my_thumb", "FileLength": "243319", "FileDescription": "test", "UpdateTimeStamp": "Jun 10, 2013 7:33:02 AM" }, Commented Jun 10, 2013 at 14:47
  • I'm able to parse the response. For sorting based on timestamp value I need help.I have stored the timestamp value in an array.Need to sort that array containing timestamp value. Commented Jun 10, 2013 at 14:48

2 Answers 2

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

EDIT:

For array of timestamps

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

EDIT 2: For keeping two arrays and sorting

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);
Sign up to request clarification or add additional context in comments.

16 Comments

callback({ "Brands": [ [{ "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" }]; })
I have tried the above code previously and it will return in alphabetical order only.Eg: Aug,June,May like wise and not based on the above response.
Can you please explain the tokens you are using.What all are the values I need to use in my code.I have stored the timestamp data in updatetimestamp array. In the above code what are the value for files,a,b?
I need to sort the array - updatetimestamp which contains the fetched timestamp value.
please share a sample array
|
3

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

3 Comments

This will also return files as [object Object] value when I put alert(files); How will you get the values inside files.
Can I sort two more arrays using the same time stamp value order?
This sort-algo can be used with arrays, objects and all other data-structures.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.