Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 基于特定值合并js中的对象数组_Javascript_Arrays_Object - Fatal编程技术网

Javascript 基于特定值合并js中的对象数组

Javascript 基于特定值合并js中的对象数组,javascript,arrays,object,Javascript,Arrays,Object,我有一个类的对象数组,其中包括类状态和类时间。我想根据相同的开始和结束时间对课程进行分组,这样学生就可以看到哪些课程关闭,哪些课程开放。对于打开的,哪些具有相同的开始和结束时间 如果所有的开始和结束时间都相同,则应分组。因为数学和体育有相同的开始和结束时间,所以他们是一个小组。西班牙语课有1套开始和结束时间,如数学和体操,但不应分组,因为它有额外的开始和结束时间 因此,将他们分组如下: class_name class_status c

我有一个类的对象数组,其中包括类状态和类时间。我想根据相同的开始和结束时间对课程进行分组,这样学生就可以看到哪些课程关闭,哪些课程开放。对于打开的,哪些具有相同的开始和结束时间

如果所有的开始和结束时间都相同,则应分组。因为数学和体育有相同的开始和结束时间,所以他们是一个小组。西班牙语课有1套开始和结束时间,如数学和体操,但不应分组,因为它有额外的开始和结束时间

因此,将他们分组如下:

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对象键必须是字符串。不反对谢谢,你知道有没有可能得到一个类似于我发布的输出的对象?所以,不要把时间设定为关键点,而是根据时间分组。请向我解释详细的信息。当然,我们可以这样做。。。现在,我非常忙。事实上,我是自由职业者。如果你有任何工作给我,请提供给我。