Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.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 如何映射/合并不同结构的对象_Javascript_Arrays_Json_D3.js - Fatal编程技术网

Javascript 如何映射/合并不同结构的对象

Javascript 如何映射/合并不同结构的对象,javascript,arrays,json,d3.js,Javascript,Arrays,Json,D3.js,总结: 我需要将Students中的值插入Employees对应的值中,以便Students值显示在与Employees['avg_rate'和'expense'相同的数组中。] 新的或修改的对象数组应在日期和部门(例如00_婴儿)上匹配,然后排除学生和员工中不存在的部门 多谢各位 预期结果: { Date:"10-09-2019"{ 00_Infants: { avg_rate: 13.39, expense

总结:

我需要将
Students
中的值插入
Employees
对应的值中,以便
Students
值显示在与
Employees['avg_rate'和'expense'相同的数组中。]

新的或修改的对象数组应在日期和部门(例如00_婴儿)上匹配,然后排除学生和员工中不存在的部门

多谢各位




预期结果:

{
    Date:"10-09-2019"{
        00_Infants: {
            avg_rate:     13.39,
            expense:     776.58,
            attendance:   28
        },
        01_Ones: {
            avg_rate:     13.31,
            expense:     716.58,
            attendance:   33
        },
},        
{   // for each date
    Date:"10-10-2019"{ 
    // for each department ^
    }
}
  • 可用于获取
    学生
    对象的值,并可用于迭代这些值
  • 方法可用于在
    employees
    数组中查找日期匹配的员工
  • 然后,对于学生对象项中的每个值,
    find()
    可用于查找员工对象中的部门,并可添加具有适当值的
    考勤
    属性
代码:

Object.values(students).forEach(([key, value]) => {
  let employee = employees.find(obj => obj.key === value.key);

  if (employee) {
    Object.entries(value).forEach(([k, v]) => {
      if (k !== "key") {
        let dept = employee.values.find(dept => dept.key === k);

        if (dept) {
          dept.value.attendance = v;
        }
      }
    });
  }
});

请加上你想计算的。并给出了一个实例和结果。顺便说一句,为什么不使用计数属性数组?@NinaScholz Hi Nina-谢谢你的评论。“为什么不使用一系列计数属性?”——我缺乏知识和技能;我想我让这件事变得比应该的困难得多;然而,我被卡住了。@KSails-您在期望的结果中添加了
出席人数:28
,您是如何获得该值的?通过添加
学生
数组项值?另外,您能否发布
学生
员工
的JSON数据示例?不清楚它们是数组还是对象。我怀疑它们是数组,但想确认一下。@Nikhil-谢谢您的检查<代码>出席人数:28。。。通过将
students
值添加到“employees”数组中进行更正。更新了
学生
员工的w/JSON数据
请执行
JSON.stringify(data,0,4)
并获取问题的格式化数据。控制台视图的副本实际上不可用,因为存在冗余信息和其他信息,如索引。请添加想要的结果和数据。谢谢@Nikhil-我能够用你的解决方案解决这个问题。
{
    Date:"10-09-2019"{
        00_Infants: {
            avg_rate:     13.39,
            expense:     776.58,
            attendance:   28
        },
        01_Ones: {
            avg_rate:     13.31,
            expense:     716.58,
            attendance:   33
        },
},        
{   // for each date
    Date:"10-10-2019"{ 
    // for each department ^
    }
}
Object.values(students).forEach(([key, value]) => {
  let employee = employees.find(obj => obj.key === value.key);

  if (employee) {
    Object.entries(value).forEach(([k, v]) => {
      if (k !== "key") {
        let dept = employee.values.find(dept => dept.key === k);

        if (dept) {
          dept.value.attendance = v;
        }
      }
    });
  }
});