使用JavaScript按日期对工作日的对象数组进行排序

时间:2020-07-03 08:53:00

标签: javascript

有人可以帮助我按日期对对象数组进行排序吗?

[{ date: "Dienstag, 07.07.20", time: "09:15", id: "18685672", … }
, { date: "Dienstag, 07.07.20", time: "13:10", id: "18685668", … }
, { date: "Freitag, 10.07.20", time: "12:05", id: "18685736", … }
, { date: "Montag, 06.07.20", time: "10:10", id: "18685684", … }
, { date: "Montag, 06.07.20", time: "14:05", id: "18685652", … }
, { date: "Donnerstag, 09.07.20", time: "14:10", id: "18685718", …}]

3 个答案:

答案 0 :(得分:1)

您可以获得ISO 8601字符串并按字符串排序。

const getISO = o => {
    const [d, m, y] = o.date.match(/.{8}$/)[0].split('.');
    return `20${y}-${m}-${d} ${o.time}`;
};

var data = [{ date: "Dienstag, 07.07.20", time: "09:15", id: "18685672" }, { date: "Dienstag, 07.07.20", time: "13:10", id: "18685668" }, { date: "Freitag, 10.07.20", time: "12:05", id: "18685736" }, { date: "Montag, 06.07.20", time: "10:10", id: "18685684" }, { date: "Montag, 06.07.20", time: "14:05", id: "18685652" }, { date: "Donnerstag, 09.07.20", time: "14:10", id: "18685718" }];

data.sort((a, b) => getISO(a).localeCompare(getISO(b)));

console.log(data);
.as-console-wrapper { max-height: 100% !important; top: 0; }

答案 1 :(得分:0)

您可以按以下方式使用sort函数:

let arr = [{ date: "Dienstag, 07.07.20", time: "09:15", id: "18685672", }
, { date: "Dienstag, 07.07.20", time: "13:10", id: "18685668", }
, { date: "Freitag, 10.07.20", time: "12:05", id: "18685736", }
, { date: "Montag, 06.07.20", time: "10:10", id: "18685684", }
, { date: "Montag, 06.07.20", time: "14:05", id: "18685652", }
, { date: "Donnerstag, 09.07.20", time: "14:10", id: "18685718"}];
let sorted = arr.sort((a, b) => new Date(a.date)  - new Date(b.date));
console.log(sorted);

答案 2 :(得分:0)

说数组在arr中。然后:

arr.sort((a,b)=>{
  aa=a.date.split(" ")[1].split(".").reverse().join(".")+a.time;
  bb=b.date.split(" ")[1].split(".").reverse().join(".")+b.time;
  return aa<bb?-1:aa==bb?0:1;
})

我假设您的日期是正常的,就像世界上任何地方一样:dayOfMonth.Month.Year,这与美国的愚蠢之举不同,该月份在dayOfMonth之前出现,例如:“ 7月4日庆祝7月4日”。 。:)