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;
}
}
});
}
});