Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

การจัดเรียงอาร์เรย์สตริงที่มีปีและเดือนใน JavaScript

สมมติเรามีอาร์เรย์ของ Strings ที่มีสตริงรวมเดือน-ปีแบบนี้:

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