61

how can i sort this array by timestamp and what is the fastest way (array has many many entries)?

my array

  myList = new Array();

  myList[0]               = {};
  myList[0]['title']      = 'I am really new';
  myList[0]['timestamp']  = 1317039046;
  myList[0]['date']       = '2011-09-26T12:10:46+00:00'; 

  myList[1]               = {};
  myList[1]['title']      = 'I am the oldest';
  myList[1]['timestamp']  = 1315656646;
  myList[1]['date']       = '2011-09-10T12:10:46+00:00';

  myList[2]               = {};
  myList[2]['title']      = 'I am older';
  myList[2]['timestamp']  = 1316866246;
  myList[2]['date']       = '2011-09-24T12:10:46+00:00';

  myList[3]               = {};
  myList[3]['title']      = 'I am old';
  myList[3]['timestamp']  = 1316952646;
  myList[3]['date']       = '2011-09-25T12:10:46+00:00';

example
http://jsbin.com/ejagup/2/edit#preview

1
  • 2
    Fyi, you can use myList = []; and, if you don't want a global var, prefix it with var: var myList = []; Commented Sep 26, 2011 at 12:42

2 Answers 2

140
myList.sort(function(x, y){
    return x.timestamp - y.timestamp;
})

myList is a JavaScript array, which supports the sort method. This method accepts a function as argument, which sorts the array according to the returned value.

Currently, the sort algorithm will place the element with the lowest timestamp first. Swap x.timestamp and y.timestamp if you want to sort the array in the other direction.

Sign up to request clarification or add additional context in comments.

3 Comments

OP didn't ask, but the sort method can also sort by date -- he only needs to convert the strings into Date objects before subtracting them -- jsbin.com/ejagup/4/edit
@Blazemonger's comment saved me a lot of hassle
@Blazemonger for those using TypeScript, you have to add .getTime(), e.g. return date1.getTime() - date2.getTime()
3

The easiest way to sort an array by date in JavaScript, Here is an example of how this method of sorting an array by date in JavaScript looks

 const fetchMessageData = () => {

        return (
            AllMessagesArr.sort((x, y) => {
                return new Date(x.timestamp) < new Date(y.timestamp) ? 1 : -1
            })
        ).reverse()
    }

         console.log("Display messages in Ascending order" ,fetchMessageData())  

Sort the array on basis of timestamp

1 Comment

Your answer could be improved with additional supporting information. Please edit to add further details, such as citations or documentation, so that others can confirm that your answer is correct. You can find more information on how to write good answers in the help center.

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.