亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 javascript 中聚合以日期為鍵的對象

如何在 javascript 中聚合以日期為鍵的對象

翻翻過去那場雪 2023-08-10 15:27:25
我有一個對象,其鍵作為日期,格式如下"yyyy-mm-dd"(例如:2020-08-14),每個鍵的值是具有兩個屬性(名稱和值)的對象數組。value我需要找到一種方法來獲取按nameaccros天分組的密鑰總和N。下面是一個更好理解的例子,原始對象有 4 天的數據,其中一天有一個空數組:{  "2020-10-15":[    {"name":"France","value":20},    {"name":"United States","value":20},    {"name":"Italy","value":5},   ], "2020-10-16":[    {"name":"Germany","value":10},    {"name":"United States","value":5},    {"name":"France","value":10}   ],  "2020-10-17":[],   "2020-10-18":[    {"name":"UK","value":10},    {"name":"Italy","value":10},   ] }例如,如果我們希望按 4 天對這些數據進行分組,我們將得到以下結果:[{"name": "France", "value": 30}, {"name": "United States", "value": 25}, {"name": "Italy", "value": 15}, {"name": "Germany", "value": 10}, {"name": "UK", "value": 10}]這是 4 天內具有相同名稱值的所有對象的總和。我完全不知道如何實現這一點,我知道可以使用映射來迭代對象鍵并通過 moment js 進行一些處理,但我不知道如何實現這一點。
查看完整描述

1 回答

?
MYYA

TA貢獻1868條經驗 獲得超4個贊

您可以使用reduce、forEach和Object.keys方法執行以下操作,

const value = {

? "2020-10-15":[

? ? {"name":"France","value":20},

? ? {"name":"United States","value":20},

? ? {"name":"Italy","value":5},

? ?],

?"2020-10-16":[

? ? {"name":"Germany","value":10},

? ? {"name":"United States","value":5},

? ? {"name":"France","value":10}

? ?],

? "2020-10-17":[],

? ?"2020-10-18":[

? ? {"name":"UK","value":10},

? ? {"name":"Italy","value":10},

? ?]


?}


let res = Object.keys(value).reduce((prev, curr) => {

? ?value[curr].forEach(item => {

? ? ? const idx = prev.findIndex(pItem => pItem.name === item.name);

? ? ? if(idx > -1) {

? ? ? ? ?const newObj = {...prev[idx], value: prev[idx].value + item.value};

? ? ? ? ?prev[idx] = newObj;

? ? ? ? ?return ;

? ? ? }

? ? ? prev.push(item);

? ?})

? ?return prev;

}, []);

console.log(res);


查看完整回答
反對 回復 2023-08-10
  • 1 回答
  • 0 關注
  • 147 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號