JSFiddle - React, Tailwind, and code Playground

by Dmitry Ieremenko

HTML

<div class="root">

</div>

JavaScript

const schedule = {
    "monday": {
      "order_before": 900,
      "day_off": false,
      "days_before_order": 1,
      "is_relative": false
    },
    "tuesday": {
      "order_before": 900,
      "day_off": false,
      "days_before_order": 1,
      "is_relative": false
    },
    "wednesday": {
      "order_before": 900,
      "day_off": false,
      "days_before_order": 1,
      "is_relative": false
    },
    "thursday": {
      "order_before": 900,
      "day_off": false,
      "days_before_order": 1,
      "is_relative": false
    },
    "friday": {
      "order_before": 900,
      "day_off": false,
      "days_before_order": 1,
      "is_relative": false
    },
    "saturday": {
      "order_before": 780,
      "day_off": false,
      "days_before_order": 1,
      "is_relative": false
    },
    "sunday": {
      "order_before": 780,
      "day_off": true,
      "days_before_order": 1,
      "is_relative": false
    }
};

const result = [];
let valueStr = '';
let dayStart = null;
let dayEnd = null;
const days = Object.keys(schedule);
days.forEach((day, index) => {
	const { order_before: before, days_before_order: daysBefore, day_off: dayOff } = schedule[day];
  const val = `Before ${before}, ${daysBefore} day(s) before`;
  console.log(val, valueStr, dayStart, dayEnd);
  if (val !== valueStr || dayOff) {
    if (dayStart) {
      result.push(`For ${dayStart}${dayEnd ? ` - ${dayEnd}` : ''}: ${valueStr}`);    	
    }
    dayEnd = null;
    if (dayOff) {
      result.push(`${day}: Closed`);
      dayStart = null;
      valueStr = '';
    } else if (index === days.length - 1) {
    	result.push(val);
    } else {
      dayStart = day;
      valueStr = val;
    }
  } else {
  	dayEnd = day;
  }
});

console.log(result);