Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

จัดเรียงอาร์เรย์ตามปีและเดือน JavaScript


เรามีอาร์เรย์แบบนี้ -

const arr = [{
   year: 2020,
   month: 'January'
}, {
   year: 2017,
   month: 'March'
}, {
   year: 2010,
   month: 'January'
}, {
   year: 2010,
   month: 'December'
}, {
   year: 2020,
   month: 'April'
}, {
   year: 2017,
   month: 'August'
}, {
   year: 2010,
   month: 'February'
}, {
   year: 2020,
   month: 'October'
}, {
   year: 2017,
   month: 'June'
}]

เราต้องเรียงลำดับอาร์เรย์นี้ตามลำดับปีจากน้อยไปมาก ยิ่งไปกว่านั้น ถ้ามีวัตถุสองชิ้นที่มีคุณสมบัติในปีเดียวกัน เราก็จะต้องจัดเรียงปีเหล่านั้นตามเดือน (เช่น ม.ค. ก.พ. เดือนมีนาคม เป็นต้น)

มาเขียนโค้ดสำหรับปัญหาการเรียงลำดับนี้กัน รหัสที่สมบูรณ์สำหรับสิ่งนี้จะเป็น -

ตัวอย่าง

const arr = [{
   year: 2020,
   month: 'January'
}, {
   year: 2017,
   month: 'March'
}, {
   year: 2010,
   month: 'January'
}, {
   year: 2010,
   month: 'December'
}, {
   year: 2020,
   month: 'April'
}, {
   year: 2017,
   month: 'August'
}, {
   year: 2010,
   month: 'February'
}, {
   year: 2020,
   month: 'October'
}, {
   year: 2017,
   month: 'June'
}]
const months = ['January', 'February', 'March', 'April', 'May', 'June',
'July', 'August', 'September', 'October', 'November', 'December'];
const sorter = (a, b) => {
   if(a.year !== b.year){
      return a.year - b.year;
   }else{
      return months.indexOf(a.month) - months.indexOf(b.month);
   };
};
arr.sort(sorter);
console.log(arr);

เราตรวจสอบว่าปีต่างกันหรือไม่ เราแค่จัดเรียงตามปี แต่เมื่อปีเท่ากัน เราจะตรวจสอบเดือนโดยใช้อาร์เรย์เดือนที่กำหนดเองซึ่งเรากำหนดไว้ และด้วยวิธีนี้ วัตถุในปีเดียวกันจะถูกจัดเรียงตามเดือน

ผลลัพธ์

ผลลัพธ์ในคอนโซลจะเป็น -

[
   { year: 2010, month: 'January' },
   { year: 2010, month: 'February' },
   { year: 2010, month: 'December' },
   { year: 2017, month: 'March' },
   { year: 2017, month: 'June' },
   { year: 2017, month: 'August' },
   { year: 2020, month: 'January' },
   { year: 2020, month: 'April' },
   { year: 2020, month: 'October' }
]