Computer >> Máy Tính >  >> Lập trình >> Javascript

Sắp xếp mảng chuỗi có năm và tháng trong JavaScript

Giả sử, chúng ta có một mảng Chuỗi chứa các chuỗi kết hợp theo tháng-năm như thế này -

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"];

Chúng tôi bắt buộc phải viết một hàm JavaScript có trong một mảng như vậy và sắp xếp các ngày này theo thứ tự cũ nhất đến mới nhất.

Ví dụ

Mã cho điều này sẽ là -

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

Đầu ra

Và đầu ra trong bảng điều khiển sẽ là -

[
   '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'
]