在 JavaScript 中创建嵌套对象值的 SUM [英] Creating a SUM of nested object values in JavaScript

查看:38
本文介绍了在 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆