[英]How to Add the values of an object array based on a condition? JS
我正在尋找根據我的對象的值對我的對象的字段求和
例如,我有一個數組:
[
{
"month": 4,
"periodDays": 1,
"expected": 5
},
{
"month": 5,
"periodDays": 10,
"expected": 40
},
{
"month": 5,
"periodDays": 11,
"expected": 35
},
{
"month": 6,
"periodDays": 8,
"expected": 20
}
]
而且我要:
[
{
"month": 4,
"periodDays": 1,
"expected": 5
},
{
"month": 5,
"periodDays": 21,
"expected": 75
},
{
"month": 6,
"periodDays": 8,
"expected": 20,
},
我知道我可以使用減速器,但我不能讓它在有條件的情況下工作。
您可以使用Array.reduce()
創建所需的結果。
我們首先使用month
值作為鍵創建地圖。 然后我們將 periodDays 和期望值初始化為零。
對於每個對象,我們然后添加 periodDays 並期望得到每個對象的總和。
最后,我們使用Object.values()
將我們的地圖變成一個數組:
let input = [ { "month": 4, "periodDays": 1, "expected": 5 }, { "month": 5, "periodDays": 10, "expected": 40 }, { "month": 5, "periodDays": 11, "expected": 35 }, { "month": 6, "periodDays": 8, "expected": 20 } ] const result = Object.values(input.reduce((acc, { month, periodDays, expected }) => { acc[month] = acc[month] || { month, periodDays: 0, expected: 0 }; acc[month].periodDays += periodDays; acc[month].expected += expected; return acc; }, {})); console.log('Result:', result)
.as-console-wrapper { max-height: 100% !important; }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.