[英]how to retrieve specific keys / values from json object and add into another json object in jQuery
[英]How to add values from multiple JSON object and store the value in another JSON object in Angular 6
我有两个不同的 JSON object。 一个 object 是 empList,另一个是 holidayList。 I want to add hours from each JSON object.Andthe sum of hours should be pushed to sumHoursList JSON object.I am doing this using Angular6. 我不知道如何迭代它以获得所需的结果。 基本上我想从empList的数据列表中添加小时数,想要从假期列表中添加小时数,并且总和值应该是sumhourlist中的append
下面是我的代码。
this.empList = [
{
'id': 1,
'name': 'Name1',
datalist: [
{
"date": 1,
"hours": 6
},
{
"date": 2,
"hours": 0
},
{
"date": 3,
"hours": 12
}
]
},
{
'id': 2,
'name': 'Name2',
datalist:[
{
"date": 1,
"hours": 0
},
{
"date": 2,
"hours": 8
},
{
"date": 3,
"hours": 0
}
]
},
];
this.holidayList=[
{
"date": 1,
"hours": 0
},
{
"date": 2,
"hours": 8
},
{
"date": 3,
"hours": 12
}
]
sumHoursList = [
{
"date": 1,
"hours": 6
},
{
"date": 2,
"hours": 16
},
{
"date": 3,
"hours": 24
}
]
谁能帮助我如何做到这一点。
这就是我理解这个问题的方式。 您希望将每个日期的小时数加在一起。 使用此循环,您的 emp 数组可以包含动态数量的数据列表。
let sum = holidayList
empList.forEach((emp) => emp.datalist.forEach((obj, i) => sum[i].hours += obj.hours))
console.log(sum)
// output: [{ date: 1, hours: 6 }, { date: 2, hours: 16 }, { date: 3, hours: 24 }]
另请注意,这些不是 JSON 对象。 它们是 JavaScript 对象。
如果我理解正确,您需要对具有相同日期的所有条目的小时值求和,这与它们所在的来源无关。
基本上你可以这样做(不是最有效的方法,但给你一个想法):
// map sources into a unified data structure
const extractedArraysFromEmpList = emplist.map((entry)=>entry.datalist)
const sources:Array<Array<{
date:number,
hours:number
}>> = [...extractedArraysFromEmpList,holidaylist];
// now reduce the various sources into one summed array
const result = sources.reduce((reducer:Array<{date:number,hours:number}>, singleSourceArray)=>{
singleSourceArray.forEach((item:{date:number,hours:number}) => {
const existingEntry = result.find((summedItem)=>summedItem.date===item.date);
// if a entry with matching date already exists, sum hours
if(existingEntry) existingEntry.hours += item.hours;
// if no entry exists, add it.
else result.push({date:item.date,hours:item.hours})
}
}, [])
// result is sumHoursList
请注意,代码未经测试。 但它应该让您了解如何解决这种情况。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.