【发布时间】:2017-10-25 15:48:37
【问题描述】:
我有一个包含 start 和 end 日期字段的工作历史对象列表。我需要按start 排序,然后按end。如果在我使用背靠背sort() 函数时工作历史对象之间的日期重叠,则订单可能会关闭。我需要一种通过多个键对 ImmutableJS 列表进行排序的方法,其中仅在第一个键值相等时才处理第二个排序键。我会假设 ImmutableJS 会有一种更简单的方法来处理这种类型的排序。这是我想出的,但这对我来说感觉很糟糕(使用 momentJS 进行日期比较):
const sortedWorkHistory = workHistory.sort((b, a) => {
const aTo = moment(a.get('to') === null ? undefined : a.get('to'));
const bTo = moment(b.get('to') === null ? undefined : b.get('to'));
if (aTo.isBefore(bTo)) {
return -1;
}
if (bTo.isBefore(aTo)) {
return 1;
}
return 0;
})
.sort((b, a) => {
const aTo = moment(a.get('to') === null ? undefined : a.get('to'));
const bTo = moment(b.get('to') === null ? undefined : b.get('to'));
if (aTo === bTo) {
const aFrom = moment(a.get('from'));
const bFrom = moment(b.get('from'));
if (aFrom.isBefore(bFrom)) {
return -1;
}
if (bFrom.isBefore(aFrom)) {
return 1;
}
return 0;
}
});
【问题讨论】:
标签: javascript sorting immutable.js