簡體   English   中英

Javascript - 重組對象數組

[英]Javascript - Restructure the array of objects

我目前有一個看起來像這樣的對象數組:

[{day:"Monday", Country:"America", cases:200},
{day:"Monday", Country:"India", cases:120},
{day:"Monday", Country:"Germany", cases:20},
{day:"Tuesday", Country:"America", cases:210},
{day:"Tuesday", Country:"India", cases:110},
{day:"Tuesday", Country:"Germany", cases:35},
{day:"Wednesday", Country:"America", cases:250},
{day:"Wednesday", Country:"India", cases:150},
{day:"Wednesday", Country:"Germany", cases:50}]

我試圖找出將這些數據重組為如下所示的最佳方法:

[{day:"Monday", "America":200, "India":120, "Germany":20},    
 {day:"Tuesday", "America":210, "India":110, "Germany":35},    
 {day:"Wednesday", "America":250, "India":150, "Germany":50}]

任何人都可以為此提供一些建議以及任何用於重組 javascript 對象的好資源嗎?

我們可以使用Array.reduce按天創建案例摘要,然后按國家/地區。

我們首先創建一個以day鍵的案例映射,然后我們使用Object.values將這個映射轉換為一個數組。

我建議無論何時你想重組數組,看看Array.mapArray.filterArray.reduce ,這些都是改變數組結構的強大方法。

 const arr = [{day:"Monday", Country:"America", cases:200}, {day:"Monday", Country:"India", cases:120}, {day:"Monday", Country:"Germany", cases:20}, {day:"Tuesday", Country:"America", cases:210}, {day:"Tuesday", Country:"India", cases:110}, {day:"Tuesday", Country:"Germany", cases:35}, {day:"Wednesday", Country:"America", cases:250}, {day:"Wednesday", Country:"India", cases:150}, {day:"Wednesday", Country:"Germany", cases:50}]; const result = Object.values(arr.reduce((acc, cur) => { // Create the summary for the day if it doesn't exist acc[cur.day] = acc[cur.day] || { day: cur.day}; // Create the summary for the country if it doesn't exist and add the cases in cur acc[cur.day][cur.Country] = (acc[cur.day][cur.Country] || 0) + cur.cases; return acc; }, {})) console.log('Result:',result)

暫無
暫無

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

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