javascript - 按键对对象中的数组进行分组
问题描述
我对我的日常对象进行分组时遇到了问题,我测试了很多方法,但没有成功,我不知道我是否可以用 lodash 或 underscorejs 做到这一点。如果有人可以帮助我,我已经坚持了几天。有谁知道这个的解决方案?
const schedules = {
Friday : [
{isOpen: true},
{morningOpen: "08:30"},
{morningClose: "12:00"},
{afternoonOpen: "18:30"},
{afternoonClose: "18:30"}
],
Monday : [
{isOpen: true},
{morningOpen: "08:30"},
{morningClose: "12:00"},
{afternoonOpen: "18:30"},
{afternoonClose: "18:30"}
],
Saturday : [
{isOpen: true},
{morningOpen: "08:30"},
{morningClose: "12:00"},
{afternoonOpen: "20:30"},
{afternoonClose: "20:30"}
]
Sunday : [
{isOpen: true},
{morningOpen: "08:30"},
{morningClose: "12:00"},
{afternoonOpen: "20:30"},
{afternoonClose: "20:30"}
],
Thursday : [
{isOpen: true},
{morningOpen: "08:30"},
{morningClose: "12:00"},
{afternoonOpen: "18:30"},
{afternoonClose: "18:30"}
],
Tuesday : [
{isOpen: true},
{morningOpen: "08:30"},
{morningClose: "12:00"},
{afternoonOpen: "18:30"},
{afternoonClose: "18:30"}
],
Wednesday : [
{isOpen: true},
{morningOpen: "08:30"},
{morningClose: "12:00"},
{afternoonOpen: "18:30"},
{afternoonClose: "18:30"}
];
我想要这个列出我的日子
schedules1 : [
{isOpen: true},
{morningOpen: "08:30"},
{morningClose: "12:00"},
{afternoonOpen: "18:30"},
{afternoonClose: "18:30"},
{days: ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"]
],
schedule2 : [
{isOpen: true},
{morningOpen: "08:30"},
{morningClose: "12:00"},
{afternoonOpen: "20:30"},
{afternoonClose: "20:30"},
{days: ["Sunday", "Saturday"]
];
谢谢
解决方案
const schedules = {
Friday: {
isOpen: true,
morningOpen: "08:30",
morningClose: "12:00",
afternoonOpen: "18:30",
afternoonClose: "18:30"
},
Monday: {
isOpen: true,
morningOpen: "08:30",
morningClose: "12:00",
afternoonOpen: "18:30",
afternoonClose: "18:30"
},
Saturday: {
isOpen: true,
morningOpen: "08:30",
morningClose: "12:00",
afternoonOpen: "20:30",
afternoonClose: "20:30"
},
Sunday: {
isOpen: true,
morningOpen: "08:30",
morningClose: "12:00",
afternoonOpen: "20:30",
afternoonClose: "20:30"
},
Thursday: {
isOpen: true,
morningOpen: "08:30",
morningClose: "12:00",
afternoonOpen: "18:30",
afternoonClose: "18:30"
},
Tuesday: {
isOpen: true,
morningOpen: "08:30",
morningClose: "12:00",
afternoonOpen: "18:30",
afternoonClose: "18:30"
},
Wednesday: {
isOpen: true,
morningOpen: "08:30",
morningClose: "12:00",
afternoonOpen: "18:30",
afternoonClose: "18:30"
},
}
const groups = []
function getOrCreateGroup(schedule) {
for (const group of groups) {
if (
group.isOpen === schedule.isOpen &&
group.morningOpen === schedule.morningOpen &&
group.morningClose === schedule.morningClose &&
group.afternoonOpen === schedule.afternoonOpen &&
group.afternoonClose === schedule.afternoonClose
) {
return group
}
}
const newGroup = {
...schedule,
days: [],
}
groups.push(newGroup)
return newGroup
}
for (const key in schedules) {
const schedule = schedules[key]
const group = getOrCreateGroup(schedule)
group.days.push(key)
}
console.log(groups)
推荐阅读
- java - 空解析器和 Tika 服务器模式
- javascript - 输入顶部的自动完成结果
- regex - 使用 .htaccess 插入或更新查询参数
- javascript - 在表单上提交复选框值而不刷新页面 AJAX PHP
- selenium - 查找元素的 xpath 只知道 href 属性的一部分 selenium ide ui vision katalon recorder
- c# - Xamarin,XAML。帮助在 ListView 中绑定颜色
- python - pyinstaller --onedir 和 auto-py-to-exe 的问题
- echarts - 具有相同类别名称的多个条根据数组数组或对象数组显示不同
- css - 如何防止li的内部导航栏崩溃
- r - 枢轴更广泛的自定义格式