How to sort an array of timestamps using lodash in desc order

前端 未结 7 1169
情话喂你
情话喂你 2021-01-12 22:46

I want to sort the following array of timestamps using lodash so the latest time stamp is first [3].

Code:

let timestamps = [\"2017-         


        
相关标签:
7条回答
  • 2021-01-12 23:16

    You could treat ISO 8601 date strings as normal strings, because they are sortable as string.

    var array = ["2017-01-15T19:18:13.000Z", "2016-11-24T17:33:56.000Z", "2017-04-24T00:41:18.000Z", "2017-03-06T01:45:29.000Z", "2017-03-05T03:30:40.000Z"];
    
    array.sort((a, b) => b > a || -(b < a));
    
    console.log(array);
    .as-console-wrapper { max-height: 100% !important; top: 0; }

    0 讨论(0)
  • 2021-01-12 23:17

    The simplest way is to use Array.prototype.sort instead of lodash. Kudos to @mplungjan and @gurvinder372 for pointing out that new Date is useless.

    Keep in mind that Array.prototype.sort updates the array on the place.

    const dates = [
          "2017-01-15T19:18:13.000Z",
          "2016-11-24T17:33:56.000Z",
          "2017-04-24T00:41:18.000Z",
          "2017-03-06T01:45:29.000Z",
          "2017-03-05T03:30:40.000Z"
        ]
    
    dates.sort((d1, d2) => d2 > d1 ? 1 : -1) // desc
    
    console.log(dates)
    
    dates.sort() // asc
    
    console.log(dates)

    0 讨论(0)
  • 2021-01-12 23:19

    Another method could be possible with this options

    let timestamps = ["2017-01-15T19:18:13.000Z", "2016-11-24T17:33:56.000Z", "2017-04-24T00:41:18.000Z", "2017-03-06T01:45:29.000Z", "2017-03-05T03:30:40.000Z"]
    
    const sorterFunc = item => (new Date() - new Date(item));
    const sorted = _.sortBy(timestamps, [sorterFunc]);
    

    those will sort the array without having to call a method .reverse() at all.

    0 讨论(0)
  • 2021-01-12 23:19
    var users = ["2017-01-15T19:18:13.000Z", "2016-11-24T17:33:56.000Z", "2017-04- 
    24T00:41:18.000Z", "2017-03-06T01:45:29.000Z", "2017-03-05T03:30:40.000Z"];
    
    _.sortBy(users, String);
    
    0 讨论(0)
  • 2021-01-12 23:23

    How to sort an array of timestamps using lodash

    This code is already sorting timestamps correctly using lodash:

    const sorted = _.sortBy(timestamps);
    

    just in ascending order, simply reverse the result using:

    const sorted = _.sortBy(timestamps).reverse();
    
    0 讨论(0)
  • 2021-01-12 23:24

    The strings are sortable using built-in sorting - no need for lodash or a sort function

    According to https://jsperf.com/array-sort-reverse-vs-string-comparison this is 1.2% slower than a string comparison - unimportant if few dates

    Sort and reverse:

    console.log(
    ["2017-01-15T19:18:13.000Z", "2016-11-24T17:33:56.000Z", "2017-04-24T00:41:18.000Z", "2017-03-06T01:45:29.000Z", "2017-03-05T03:30:40.000Z" ]
     .sort()
     .reverse()
    )

    0 讨论(0)
提交回复
热议问题