JS如何将数组对象中id相同且存在时间交集的元素取出来?

例:

[{

id: 1,

start: '2020-11-20',

end: '2020-11-23',

}, {

id: 2,

start: '2020-11-20',

end: '2020-11-24',

}, {

id: 1,

start: '2020-11-21',

end: '2020-11-25',

}]

如何优雅的取出id相同且存在时间交集的元素?
我目前想到的是都转换成时间戳再一一比对,有没有更优的解法呢?

时间的比较不需要转时间戳,直接比大小就会得true或者false,
时间交集提供一个简单的思路,用第二数据的开始时间和第一个数据的结束时间比大小,如果得到true说明存在区间,false说明不存在

function find (input = []) {

const output = new Set();

Array

.from(input)

.sort(

(m, n) =>

m.id - n.id ||

(m.start < n.end || m.end > n.start) &&

output.add(m) && output.add(n),

);

return Array.from(output);

}

回答

以上是 JS如何将数组对象中id相同且存在时间交集的元素取出来? 的全部内容, 来源链接: www.h5w3.com/112889.html

度小满广告!风险提示:广告信息均来自平台方,不代表平台安全性,不构成建议!
度小满
回到顶部