给定 2 个数组a
并b
包含矩范围,
const Moment = require('moment');
const MomentRange = require('moment-range');
const moment = MomentRange.extendMoment(Moment);
let a = [
moment.range(moment('2020-01-01 09:00'), moment('2020-01-01 11:00')),
moment.range(moment('2020-01-01 14:00'), moment('2020-01-01 18:00')),
moment.range(moment('2020-01-01 20:00'), moment('2020-01-01 21:00')),
moment.range(moment('2020-01-01 22:00'), moment('2020-01-01 23:00'))
];
let b = [
moment.range(moment('2020-01-01 11:30'), moment('2020-01-01 13:00')),
moment.range(moment('2020-01-01 17:00'), moment('2020-01-01 20:30')),
moment.range(moment('2020-01-01 21:45'), moment('2020-01-01 23:15'))
];
我们如何计算一个包含在 中但不在 中c
的矩范围的数组?b
a
对于一个涉及a
and的例子b
,我们想要得到结果c
,由下式给出
let c = [
moment.range(moment('2020-01-01 11:30'), moment('2020-01-01 13:00')),
moment.range(moment('2020-01-01 18:00'), moment('2020-01-01 20:00')),
moment.range(moment('2020-01-01 21:45'), moment('2020-01-01 22:00')),
moment.range(moment('2020-01-01 23:00'), moment('2020-01-01 23:15'))
];
使用节点 v14.2.0、2.27.0moment
和moment-range
4.0.2。
@Nikita-Iskorkin 运行你的代码
let c = [];
b.forEach(range => {
if (!a.includes(range))
c.push(range)
})
给出以下结果,c
其中不排除/减去在 中找到的时间范围a
:
[
t {
start: Moment<2020-01-01T11:30:00-05:00>,
end: Moment<2020-01-01T13:00:00-05:00>
},
t {
start: Moment<2020-01-01T17:00:00-05:00>,
end: Moment<2020-01-01T20:30:00-05:00>
},
t {
start: Moment<2020-01-01T21:45:00-05:00>,
end: Moment<2020-01-01T23:15:00-05:00>
}
]
期望的结果c
应该是:
[
t {
start: Moment<2020-01-01T11:30:00-05:00>,
end: Moment<2020-01-01T13:00:00-05:00>
},
t {
start: Moment<2020-01-01T18:00:00-05:00>,
end: Moment<2020-01-01T20:00:00-05:00>
},
t {
start: Moment<2020-01-01T21:45:00-05:00>,
end: Moment<2020-01-01T22:00:00-05:00>
},
t {
start: Moment<2020-01-01T23:00:00-05:00>,
end: Moment<2020-01-01T23:15:00-05:00>
}