在 JavaScript 中创建嵌套对象值的 SUM [英] Creating a SUM of nested object values in JavaScript
本文介绍了在 JavaScript 中创建嵌套对象值的 SUM的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在使用以下代码来查询 API,该 API 可以很好地返回 JSON 中的嵌套值:
const obj = response.data.map(function(item) {返回 [item.id, item.jobNumber];});
示例 JSON:
<预><代码>{数据": [{身份证":100,工作编号":1,工作任务":[{身份证":12,成本": {金额字符串":100},{身份证":13,成本": {金额字符串":500}}}]},{身份证":101,"jobNumber": 2,工作任务":[{身份证":14,成本": {金额字符串":100},{身份证":15,成本": {金额字符串":200}}}]}]}我现在想遍历嵌套的作业任务,并对每个作业的 item.jobTasks.cost.amountString 求和,以便可以返回以下内容:
- JobNumber1:任务成本:600
- JobNumber2:任务成本:300
解决方案
您可以使用 Array#map()
创建新数组和 Array#reduce()
来实现code> 对 amountString
const apiJson = {"data":[{"id":100,"jobNumber":1,"jobTasks":[{"id":12,"cost":{"amountString":100}},{"id":13,"cost":{"amountString":500}}]},{"id":101,"jobNumber":2,"jobTasks":[{"id":14,"cost":{"amountString":100}},{"id":15,"cost":{"amountString":200}}]}]};const 输出 = apiJson.data.map(d=>({jobNumber : d.jobNumber,tasksCost : d.jobTasks.reduce((a,b)=>a.cost.amountString+b.cost.amountString)}));console.log(output);
I'm using the following code to query an API, which is working well to return nested values in JSON:
const obj = response.data.map(function(item) {
return [item.id, item.jobNumber];
});
Example JSON:
{
"data": [
{
"id": 100,
"jobNumber": 1,
"jobTasks": [
{
"id": 12,
"cost": {
"amountString": 100
},
{
"id": 13,
"cost": {
"amountString": 500
}
}
}
]
},
{
"id": 101,
"jobNumber": 2,
"jobTasks": [
{
"id": 14,
"cost": {
"amountString": 100
},
{
"id": 15,
"cost": {
"amountString": 200
}
}
}]
}]
}
I'm wanting to now loop through the nested Job Tasks, and SUM the item.jobTasks.cost.amountString for each job, So that the following could be returned:
- JobNumber1: Task Costs: 600
- JobNumber2: Task Costs: 300
解决方案
You can do it using Array#map()
to create a new array and Array#reduce()
to sum the amountString
const apiJson = {"data":[{"id":100,"jobNumber":1,"jobTasks":[{"id":12,"cost":{"amountString":100}},{"id":13,"cost":{"amountString":500}}]},{"id":101,"jobNumber":2,"jobTasks":[{"id":14,"cost":{"amountString":100}},{"id":15,"cost":{"amountString":200}}]}]};
const output = apiJson.data.map(d=>({
jobNumber : d.jobNumber,
tasksCost : d.jobTasks.reduce((a,b)=>a.cost.amountString+b.cost.amountString)
}));
console.log(output);
这篇关于在 JavaScript 中创建嵌套对象值的 SUM的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文