JSFiddle - React, Tailwind, and code Playground

by Scott Kaye

JavaScript

const dates = [{
  from: new Date("2022-01-01T00:00:00"),
  to: new Date("2022-01-02T00:00:00")
}, {
  from: new Date("2022-01-02T00:00:00"),
  to: new Date("2022-01-03T00:00:00")
}, {
  from: new Date("2022-01-03T00:00:00"),
  to: new Date("2022-01-04T00:00:00")
}];

const isTouching1=(d)=>d.every((r,i)=>i<1?1:r.from-d[~-i].to<=0);
const isTouching2=(d)=>d.slice(1).every((r,i)=>r.from-d[i].to<=0);
const isTouching3=(d)=>d.every((r,i)=>r.from-(d[~-i]?.to??1/0)<=0);
const isTouching4=(d,[,...r]=d)=>r.every((r,i)=>r.from-d[i].to<=0);
const isTouching5=(d,[,...r]=d)=>!r.reduce((c,r,i)=>c+(r.from-d[i].to),0);
const isTouching6=(d)=>!d.reduce((c,r,i)=>c+(i<1?0:r.from-d[~-i].to),0);
const isTouching7=([f,...r])=>!(r.reduce((c,d)=>c-d.from+ +d.to,f.to)-r.slice(-1)[0].to);

console.log(isTouching1(dates));
console.log(isTouching2(dates));
console.log(isTouching3(dates));
console.log(isTouching4(dates));
console.log(isTouching5(dates));
console.log(isTouching6(dates));
console.log(isTouching7(dates));