在对象数组中对日期和时间字符串进行排序



给定:

[{
date: "2020-12-23",
session: "14:00:00-15:00:00"
}, {
date: "2020-12-23",
session: "10:00:00-12:00:00"
},{
date: "2020-12-23",
session: "12:00:00-14:00:00"
},{
date: "2020-12-22",
session: "14:00:00-15:00:00"
}]

如何按日期排序&一场因为它们都是字符串,特别是会话是的时间范围

Sort需要一个函数,该函数比较数组的两个元素并返回一个数字:正、负或零。

现在,由于我们必须处理日期和时间,我们从每个组件中选择date,并通过拆分和获取session字符串的前半部分来选择会话时间戳的开始。我们将日期和时间连接起来,使其易于解析为毫秒。毫秒现在可以在我们的比较器中用于比较会话开始时间。

const v = [{
date: "2020-12-23",
session: "14:00:00-15:00:00"
}, {
date: "2020-12-23",
session: "10:00:00-12:00:00"
},{
date: "2020-12-23",
session: "12:00:00-14:00:00"
},{
date: "2020-12-22",
session: "14:00:00-15:00:00"
}];
const parser = ({date, session}) => Date.parse(`${date}T${session.split('-')[0]}`)
v.sort((a, b) => parser(a) - parser(b))
console.log(v)

返回

[
{
"date": "2020-12-22",
"session": "14:00:00-15:00:00"
},
{
"date": "2020-12-23",
"session": "10:00:00-12:00:00"
},
{
"date": "2020-12-23",
"session": "12:00:00-14:00:00"
},
{
"date": "2020-12-23",
"session": "14:00:00-15:00:00"
}
]

这可以使用自定义比较函数来完成。连接字符串并使用内置的字符串比较方法。

exams.sort( 
(a,b) => (a.date+a.session).localeCompare(b.date+b.session)
)

相关内容

  • 没有找到相关文章

最新更新