Cортировка по дню рождения от текущей даты js
const arr = [
{ birthday: "1993-04-24", id: 1 },
{ birthday: "1993-08-6", id: 2 },
{ birthday: "1993-11-24", id: 3 },
{ birthday: "1993-1-24", id: 4 },
{ birthday: "1993-01-01", id: 5 },
];
Как я могу отсортировать этот массив по элементу даты в порядке от даты, ближайшей к текущей дате и времени? Помогите. буду очень благодарен!
спасибо, но от текущей даты. сегодня 2022-09-30 тобишь что-ты получалось:
const arr = [
{ birthday: "1993-11-24", id: 3 },
{ birthday: "1993-01-01", id: 5 },
{ birthday: "1993-01-24", id: 1 },
{ birthday: "1993-04-24", id: 4 },
{ birthday: "1993-08-06", id: 2 },
];
Ответы (2 шт):
Автор решения: doox911
→ Ссылка
const arr = [
{ birthday: "1993-04-24", id: 1 },
{ birthday: "1993-08-06", id: 2 },
{ birthday: "1993-11-24", id: 3 },
{ birthday: "1993-01-24", id: 4 },
{ birthday: "1993-01-01", id: 5 },
];
arr.sort(function(a, b) {
return new Date(b.birthday) - new Date(a.birthday);
});
console.log(arr.map(i => i.birthday));
arr.sort(function(a, b) {
return new Date(a.birthday) - new Date(b.birthday);
});
console.log(arr.map(i => i.birthday));
Так же гуглится за 5 секунд:
https://stackoverflow.com/questions/10123953/how-to-sort-an-object-array-by-date-property
https://stackoverflow.com/questions/52287060/how-to-sort-array-by-date-in-javascript
Вот на местном:
Как сделать сортировку массива по дате?
Автор решения: iqvver
→ Ссылка
У меня сработало вот так:
const arr = [
{ birthday: "1993-04-24", id: 1 },
{ birthday: "1993-08-06", id: 2 },
{ birthday: "1993-11-24", id: 3 },
{ birthday: "1993-01-24", id: 4 },
{ birthday: "1993-01-01", id: 5 },
];
const dateToYMD = (date) => {
var d = date.getDate();
var m = date.getMonth() + 1;
return "" + (m <= 9 ? "0" + m : m) + "-" + (d <= 9 ? "0" + d : d);
}
arr.sort((a, b) =>
dateToYMD(new Date(a.birthday)) >
dateToYMD(new Date(b.birthday)) >
0
? 1
: -1
)