簡體   English   中英

如何從數組中總結對象的屬性並將其存儲到父對象?

[英]How to sum properties of objects from array and store it to parent object?

我有一個對象數組,例如:

var obj = {
   "ABC" : {
      "name" : "ABC",
      "budget" : 0,
      "expense" : 0,
      "ledgers" : [{
        "Actual1920": 10,
       "Budget1920": 20,
      },
      {
       "Actual1920": 10,
       "Budget1920": 10,
      }]
  },
  "PQR" : {
    "name" : "PQR",
    "budget" : 0,
    "expense" : 0,
    "ledgers" : [{
      "Actual1920": 10,
      "Budget1920": 20,
    }]
  }
}

我想對 ABC 對象中的 Actual1920 求和,它是 Ledgers 數組,並將其存儲在 ABC 的預算中,費用也相同

預期結果

var obj = {
   "ABC" : {
      "name" : "ABC",
      "budget" : 30,
      "expense" : 20,
      "ledgers" : [{
        "Actual1920": 10,
       "Budget1920": 20,
      },
      {
       "Actual1920": 10,
       "Budget1920": 10,
      }]
  },
  "PQR" : {
    "name" : "PQR",
    "budget" : 20,
    "expense" : 10,
    "ledgers" : [{
      "Actual1920": 10,
      "Budget1920": 20,
    }]
  }
}

將 Actual1920 的總和存儲到費用中,將預算 1920 的總和存儲到預算中。

您可以使用forEach().map()函數獲取所需字段新數組名稱ledgers的總和。

var arr =  [  {
    "name": "Salary",
    "budget": 0,
    "expense": 0,
    "remaing": 0,
    "ledgers": [
    {
    "Actual1920": 9009006,
    "Budget1920": 46861141.9709555,
    "CostOwner": "Lakshmi Mohan",
    "LTRevExp": "Expense-EB",
    "LedgerBudget": "Salary",
    "LedgereType": "Salary-Teaching",
    "RemainingAmount": 37852135.9709555,
    "leadgerLevel": "EBITDA",
    "quaterFour": 11715285.492738875,
    "quaterOne": 11715285.492738875,
    "quaterThree": 11715285.492738875,
    "quaterTwo": 11715285.492738875
    },
    {
    "Actual1920": 7765368,
    "Budget1920": 33788679.599044524,
    "CostOwner": "Lakshmi Mohan",
    "LTRevExp": "Expense-EB",
    "LedgerBudget": "Salary",
    "LedgereType": "Salary-Non Teaching",
    "RemainingAmount": 26023311.599044524,
    "leadgerLevel": "EBITDA",
    "quaterFour": 8447169.899761131,
    "quaterOne": 8447169.899761131,
    "quaterThree": 8447169.899761131,
    "quaterTwo": 8447169.899761131
    },
    {
    "Actual1920": 0,
    "Budget1920": 0,
    "CostOwner": "Lakshmi Mohan",
    "LTRevExp": "Expense-EB",
    "LedgerBudget": "Salary",
    "LedgereType": "Salary-Contract & Professional",
    "RemainingAmount": 0,
    "leadgerLevel": "EBITDA",
    "quaterFour": 0,
    "quaterOne": 0,
    "quaterThree": 0,
    "quaterTwo": 0
    }
    ]
    },
    {
    "name": "Scholarship & Discounts",
    "budget": 0,
    "expense": 0,
    "remaing": 0,
    "ledgers": [
    {
    "Actual1920": 1460000,
    "Budget1920": 15977747.5,
    "CostOwner": "Vineeta S",
    "LTRevExp": "Expense-EB",
    "LedgerBudget": "Scholarship & Discounts",
    "LedgereType": "Scholarship & Discount",
    "RemainingAmount": 14517747.5,
    "leadgerLevel": "EBITDA",
    "quaterFour": 0,
    "quaterOne": 3723000,
    "quaterThree": 12254747.5,
    "quaterTwo": 0
    }
    ]
    }
   ]

var ledger = {"salary" : 0 , "Expense" : 0 , "remaining" : 0};
arr.forEach(function(singleObject){
    singleObject.ledgers.forEach(function(singleArrObject){
        Object.keys(singleArrObject).map((o)=>{
            if(o == "Actual1920"){

                ledger.salary = ledger.salary + singleArrObject[o]; 
            }
            else if(o == "Budget1920"){
                ledger.Expense = ledger.Expense + singleArrObject[o];
            }
            else if(o == "RemainingAmount"){
                ledger.remaining = ledger.remaining + singleArrObject[o];
            }
        })
    })
});
console.log(ledger);
    arr.forEach(function(singleObject){
       console.log(singleObject);
       singleObject.ledgers.forEach(function(singleArrObject){
        Object.keys(singleArrObject).map((o)=>{
            if(o == "Actual1920"){

                singleObject.expense = singleObject.expense + singleArrObject[o]; 
            }
            else if(o == "Budget1920"){
                singleObject.budget = singleObject.budget + singleArrObject[o];
            }
            else if(o == "RemainingAmount"){
                singleObject.remaining = singleObject.remaining + singleArrObject[o];
            }
        })
    })
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM