在JavaScript中排序具有年和月的字符串数组

假设我们有一个字符串数组,其中包含月-年组合字符串,如下所示:

const arr = ["2009-feb", "2009-jan", "2010-mar", "2010-jan", "2011-jul",

"2011-sep", "2011-jan", "2012-jan", "2012-dec", "2012-feb", "2013-may",

"2013-jul", "2013-jun", "2014-jan", "2014-dec", "2014-may", "2015-may",

"2015-jan", "2015-jun", "2016-jan", "2016-dec"];

我们需要编写一个JavaScript函数,该函数接受一个这样的数组,并按从最早到最新的顺序对这些日期进行排序。

示例

为此的代码将是-

const arr = ["2009-feb", "2009-jan", "2010-mar", "2010-jan", "2011-jul",

"2011-sep", "2011-jan", "2012-jan", "2012-dec", "2012-feb", "2013-may",

"2013-jul", "2013-jun", "2014-jan", "2014-dec", "2014-may", "2015-may",

"2015-jan", "2015-jun", "2016-jan", "2016-dec"];

const sorter = (a, b) => {

   const getDate = date => {

      let day = date.split('-');

      day[1] = {

         jan: 1, feb: 2, mar: 3, apr: 4, may: 5, jun: 6, jul: 7, aug: 8, sep: 9, oct: 10, nov: 11, dec: 12

      }

      [day[1]

      .substring(0, 3)

      .toLowerCase()] || 0;

      return day;

   }

   const aDate = getDate(a);

   const bDate = getDate(b);

   return aDate[0] - bDate[0] || aDate[1] - bDate[1];

}

arr.sort(sorter);

console.log(arr);

输出结果

控制台中的输出将是-

[

   '2009-jan', '2009-feb',

   '2010-jan', '2010-mar',

   '2011-jan', '2011-jul',

   '2011-sep', '2012-jan',

   '2012-feb', '2012-dec',

   '2013-may', '2013-jun',

   '2013-jul', '2014-jan',

   '2014-may', '2014-dec',

   '2015-jan', '2015-may',

   '2015-jun', '2016-jan',

   '2016-dec'

]

以上是 在JavaScript中排序具有年和月的字符串数组 的全部内容, 来源链接: utcz.com/z/334711.html

回到顶部