JSFiddle - React, Tailwind, and code Playground
JavaScript
let arrData = [
{
"dayOfTheWeek":"Monday",
"isOpen":true,
"hoursOfBusiness":[
{
"opensAt":"10:00:00",
"closesAt":"15:00:00"
}
]
},
{
"dayOfTheWeek":"Tuesday",
"isOpen":true,
"hoursOfBusiness":[
{
"opensAt":"10:00:00",
"closesAt":"15:00:00"
}
]
},
{
"dayOfTheWeek":"Wednesday",
"isOpen":true,
"hoursOfBusiness":[
{
"opensAt":"10:00:00",
"closesAt":"15:00:00",
}
]
},
{
"dayOfTheWeek":"Thursday",
"isOpen":true,
"hoursOfBusiness":[
{
"opensAt":"09:00:00",
"closesAt":"16:00:00",
}
]
},
{
"dayOfTheWeek":"Friday",
"isOpen":true,
"hoursOfBusiness":[
{
"opensAt":"10:00:00",
"closesAt":"14:00:00",
}
]
},
{
"dayOfTheWeek":"Saturday",
"isOpen":false,
"hoursOfBusiness":[]
},
{
"dayOfTheWeek":"Sunday",
"isOpen":false,
"hoursOfBusiness":[]
}
]
function openingHours(data){
let merged = [];
let idx = -1;
for (let i = 0; i < data.length; i++) {
let day = data[i];
if (
idx == -1 ||
merged[idx].hoursOfBusiness.opensAt != day.hoursOfBusiness.opensAt
) {
merged.push({
days: day.dayOfTheWeek,
opensAt: day.hoursOfBusiness.opensAt,
closesAt: day.hoursOfBusiness.closesAt,
});
idx++;
} else {
merged[idx].days.push(day.dayOfTheWeek);
}
}
return merged;
}
console.log(openingHours(arrData))