Giả sử chúng ta có một mảng chứa các ngày tháng ở định dạng MM-YYYY như sau:
const arr = ["1-2016", "7-2015", "7-2016", "3-2016", "8-2016", "2-2016", "6-2016", "8-2015", "5-2016", "4-2016", "9-2015", "10-2015", "11-2015", "12-2015"];
Chúng ta cần viết một hàm JavaScript nhận một mảng như vậy và sắp xếp nó sao cho các ngày được sắp xếp theo thứ tự từ cũ đến mới.
Ví dụ
Mã thực hiện:
const arr = ["1-2016", "7-2015", "7-2016", "3-2016", "8-2016", "2-2016", "6-2016", "8-2015", "5-2016", "4-2016", "9-2015", "10-2015", "11-2015", "12-2015"];
const padToString = (num) => {
return String("0" + num).slice(-2);
};
const sortByDate = (first, second) => {
const firstPart = first.split('-'), secondPart = second.split('-');
const a = firstPart[1] + padToString(firstPart[0]);
const b = secondPart[1] + padToString(secondPart[0]);
return a - b;
};
arr.sort(sortByDate);
console.log(arr);
Kết quả
Kết quả trong console:
[ '7-2015', '8-2015', '9-2015', '10-2015', '11-2015', '12-2015', '1-2016', '2-2016', '3-2016', '4-2016', '5-2016', '6-2016', '7-2016', '8-2016' ]