Javascript 基于特定值合并js中的对象数组
我有一个类的对象数组,其中包括类状态和类时间。我想根据相同的开始和结束时间对课程进行分组,这样学生就可以看到哪些课程关闭,哪些课程开放。对于打开的,哪些具有相同的开始和结束时间 如果所有的开始和结束时间都相同,则应分组。因为数学和体育有相同的开始和结束时间,所以他们是一个小组。西班牙语课有1套开始和结束时间,如数学和体操,但不应分组,因为它有额外的开始和结束时间 因此,将他们分组如下:Javascript 基于特定值合并js中的对象数组,javascript,arrays,object,Javascript,Arrays,Object,我有一个类的对象数组,其中包括类状态和类时间。我想根据相同的开始和结束时间对课程进行分组,这样学生就可以看到哪些课程关闭,哪些课程开放。对于打开的,哪些具有相同的开始和结束时间 如果所有的开始和结束时间都相同,则应分组。因为数学和体育有相同的开始和结束时间,所以他们是一个小组。西班牙语课有1套开始和结束时间,如数学和体操,但不应分组,因为它有额外的开始和结束时间 因此,将他们分组如下: class_name class_status c
class_name class_status class_hours
Math - Gym Open [Class Hours]
Science - Art - History - Language Closed [No Hours]
Spanish Open [Class Hours]
Physics Open [Class Hours]
var列表={
“时间表”:[{
“班级名称”:“数学”,
“类_状态”:“打开”,
“课堂时间”:[{
“开始”:“070000”,
“结束”:“131400”
}, {
“开始”:“131500”,
“结束”:“132000”
}]
}, {
“班级名称”:“科学”,
“类别状态”:“已关闭”,
“课堂时间”:假
}, {
“类别名称”:“艺术”,
“类别状态”:“已关闭”,
“课堂时间”:假
}, {
“类别名称”:“历史记录”,
“类别状态”:“已关闭”,
“课堂时间”:假
}, {
“类别名称”:“语言”,
“类别状态”:“已关闭”,
“课堂时间”:假
}, {
“班级名称”:“健身房”,
“类_状态”:“打开”,
“课堂时间”:[{
“开始”:“070000”,
“结束”:“131400”
}, {
“开始”:“131500”,
“结束”:“132000”
}]
},{
“类别名称”:“西班牙语”,
“类_状态”:“打开”,
“课堂时间”:[{
“开始”:“070000”,
“结束”:“131400”
}, {
“开始”:“131500”,
“结束”:“132000”
},
{
“开始”:“211500”,
"完:"222000"
}]
},
{
“班级名称”:“物理学”,
“类_状态”:“打开”,
“课堂时间”:[{
“开始”:“080000”,
“结束”:“131400”
}, {
“开始”:“141500”,
“结束”:“152000”
}]
}]
};
函数合并值(列表){
设obj=Object.fromEntries(list.map(({
课时
})=>[课堂时间{
计数:0,
类别名称:[],
}]));
list.forEach(({
课时,
类名,
}) => {
obj[class_hrs].count++;
obj[class\u hrs].class\u name.push(class\u name);
});
返回obj;
}
log(合并值(list.time_表))代码>请像这样尝试
function mergeValues(list) {
let obj = Object.fromEntries(list.map(({
class_hrs
}) => [JSON.stringify(class_hrs), {
count: 0,
class_name: [],
}]));
list.forEach(({
class_hrs,
class_name,
}) => {
obj[JSON.stringify(class_hrs)].count++;
obj[JSON.stringify(class_hrs)].class_name.push(class_name);
});
return obj;
}
如果您遵循此操作,就不会丢失class\hrs
信息。Hi@Rain-Man对象键必须是字符串。不反对谢谢,你知道有没有可能得到一个类似于我发布的输出的对象?所以,不要把时间设定为关键点,而是根据时间分组。请向我解释详细的信息。当然,我们可以这样做。。。现在,我非常忙。事实上,我是自由职业者。如果你有任何工作给我,请提供给我。