JSFiddle - React, Tailwind, and code Playground

by Saksham Malhotra

JavaScript

let bookingsA = [
  ['09:00', '10:00'],
  ['11:00', '12:00'],
  ['13:00', '15:00']
]
let workingHoursA = ['09:00', '16:00']

let bookingsB = [
  ['11:00', '12:30'],
  ['14:00', '14:30'],
  ['16:30', '17:00'],
  ['17:00', '18:00']
]
let workingHoursB = ['10:00', '18:00']

let meetingDuration = 30;

let results = [];

function getNumber(time) {
  return +time.replace(':', '');
}

function getSlots() {
  let startArray = [];
  let endArray = [];

  let aStartTracker = 0,
    aEndTracker = 0,
    bStartTracker = 0,
    bEndTracker = 0;

  while (aTracker < bookingsA.length && bTracker < bookingsB.length) {
    if (getNumber(bookingsA[aStartTracker][0]) < getNumber(bookingsB[bStartTracker][0])) {
      startArray.push(getNumber(bookingsA[aStartTracker][0]));
      aStartTracker++;
    } else {
      startArray.push(getNumber(bookingsB[bStartTracker][0]));
      bStartTracker++;
    }

    if (getNumber(bookingsA[aEndTracker][1]) < getNumber(bookingsB[bEndTracker][1])) {
      startArray.push(getNumber(bookingsA[aEndTracker][1]));
      aEndTracker++;
    } else {
      startArray.push(getNumber(bookingsB[bEndTracker][1]));
      bEndTracker++;
    }
  }
}