<JavaScript> 重組資料:flatMap與map的差異

閱讀時間約 4 分鐘


前幾日收到要做圖表的需求,看了一下後端傳來的資料無法直接餵給圖表套件使用,所以這邊要當套件和後端的橋樑將資料重組,接下來請看下方需求實例

需求

原始資料

[
{
"interval": "100", // 獎金
"rewardsCount": {
"100 POINTS": "2", // 活動名稱:次數
"300 CASH": "6",
"400 CASH": "1",
"200 POINTS": "6"
}
},
{
"interval": "5",
"rewardsCount": {
"10 CASH": "3",
"30 CASH": "1"
}
},
{
"interval": "1000",
"rewardsCount": {}
},
{
"interval": "10",
"rewardsCount": {
"10 CASH": "3",
"30 CASH": "4"
}
}
]

希望重組資料結果為,只要這些獎勵的名字

[
"100 POINTS",
"300 CASH",
"400 CASH",
"200 POINTS",
"10 CASH",
"30 CASH"
]


解法

說明

  • Object.keys取得rewardsCount內的key列表
  • flatMap解開下一層
  • 使用new Set確保資料不會重複
  • 使用... 將陣列展開
const getRewardName = [...new Set(rewardGroup.flatMap(item => Object.keys(item.rewardsCount)))];

最終結果,直接取得全部獎項的名字

[
"100 POINTS",
"300 CASH",
"400 CASH",
"200 POINTS",
"10 CASH",
"30 CASH"
]

參考


其他

假設使用map而非flatMap

const getRewardName = [...new Set(rewardGroup.map(item => Object.keys(item.rewardsCount)))];

結果會是,Object.keys確實將每個物件的key取出return []

[
[
"100 POINTS",
"300 CASH",
"400 CASH",
"200 POINTS"
],
[
"10 CASH",
"30 CASH"
],
[],
[
"10 CASH",
"30 CASH"
]
]

但這個結果並不是我需要的,所以我使用flatMap,而有了這個例子就能很清楚了解flatMapmap的差異了


結語

以上就是今天重組資料的Code分享,下次有想到什麼再跟大家分享XD 有疑問或是想了解什麼都可以留言,我如果有空會回覆~


開發之路有你有我有卡比,收錄各種開發的技術分享與疑難雜症解★☆
留言0
查看全部
發表第一個留言支持創作者!
你可能也想看
Thumbnail
「設計不僅僅是外觀和感覺。設計是其運作的方式。」 — Steve Jobs 身為一個獨立文案,許多人會以為我們的生活只需要面對電腦,從無到有,用精巧的文字填滿空白的螢幕,呈現心目中獨具風格的作品。 ——有的時候可以如此,但其實這是我們夢寐以求的偶發日常。 更多的時候,白天的工作時間總被各種繁雜
Thumbnail
👨‍💻簡介 在程式開發的世界中,我們經常需要處理各式各樣的資料,可能是一個人的個人資訊,也可能是一個商品的詳細訊息。當我們面對這麼多的資料時,如何將它們有系統地整理起來,讓我們能夠輕鬆地找到所需,便成了一個重要的課題。這時,結構體的概念就像是一道曙光,為我們提供了一個非常有力的工具。 結
提早開始!!別低估複利的力量,至少撥一筆錢,讓他為你工作 Buffett and Berkshire 巴菲特和伯克希爾 Warren Buffett represents the epitome of long-term compounding when it comes to invest
Thumbnail
  今天放榜了,雖然也有填其他學系,但想先來說說彰師大這間我有去面試的學校,因為之前分享了面試心得,所以這篇想著重在我如何準備審查資料,那按照我的準備順序,我會說明自己準備的過程。 我自己在備審拿到86.5的成績,不算很好,但因為我完全沒有生物相關的活動或競賽經驗,所以應該也有扣分
Thumbnail
高股息策略是台灣市場備受喜愛的策略,券商也因應此趨勢,推出了0056及00878等商品。但是有一派人認為高股息只是左手換右手,並不能帶來超額報酬。
Thumbnail
什麼是自動再平衡? 再平衡是買賣資產以使您的投資組合恢復到目標權重的過程。 當一種資產的表現優於另一種資產時,它在投資組合中的權重就會增加,這可能會使持有者面臨比他們希望的更大的風險。投資組合需要定期重新平衡至目標權重,鎖定收益並重新投資於表現不佳的資產。 為什麼這有關係? 重新平衡很重要,因為隨著
Thumbnail
這樣分析完之後,你就會很恐怖的發現一個事實:這世界上所有的組織,只要「信息量」與「組織度」其中「任一」比「理想費拉」還要小,就註定無法通過時間的考驗,即使有無限的理想費拉供其寄生都不行,必須要有更高層次的秩序輸入才能替這些群體續命。這就是「神意秩序」存在的明證。
Thumbnail
槓桿型 ETF 可以買嗎?買槓桿型 ETF 不如直接買期貨?說說我的看法。
Thumbnail
股市原本就是一種循環,多頭,盤整到空頭!!!這一連串組合成一個完整的交易週期。
Thumbnail
股市原本就是一種循環,多頭,盤整到空頭!!!這一連串組合成一個完整的交易週期
Thumbnail
2019年全年的股息+債息應該可以領到約55萬左右台幣(6,242USD&16,000SGD計算),按2018年底市值算的現金收益率大約是6.6%左右。
Thumbnail
「設計不僅僅是外觀和感覺。設計是其運作的方式。」 — Steve Jobs 身為一個獨立文案,許多人會以為我們的生活只需要面對電腦,從無到有,用精巧的文字填滿空白的螢幕,呈現心目中獨具風格的作品。 ——有的時候可以如此,但其實這是我們夢寐以求的偶發日常。 更多的時候,白天的工作時間總被各種繁雜
Thumbnail
👨‍💻簡介 在程式開發的世界中,我們經常需要處理各式各樣的資料,可能是一個人的個人資訊,也可能是一個商品的詳細訊息。當我們面對這麼多的資料時,如何將它們有系統地整理起來,讓我們能夠輕鬆地找到所需,便成了一個重要的課題。這時,結構體的概念就像是一道曙光,為我們提供了一個非常有力的工具。 結
提早開始!!別低估複利的力量,至少撥一筆錢,讓他為你工作 Buffett and Berkshire 巴菲特和伯克希爾 Warren Buffett represents the epitome of long-term compounding when it comes to invest
Thumbnail
  今天放榜了,雖然也有填其他學系,但想先來說說彰師大這間我有去面試的學校,因為之前分享了面試心得,所以這篇想著重在我如何準備審查資料,那按照我的準備順序,我會說明自己準備的過程。 我自己在備審拿到86.5的成績,不算很好,但因為我完全沒有生物相關的活動或競賽經驗,所以應該也有扣分
Thumbnail
高股息策略是台灣市場備受喜愛的策略,券商也因應此趨勢,推出了0056及00878等商品。但是有一派人認為高股息只是左手換右手,並不能帶來超額報酬。
Thumbnail
什麼是自動再平衡? 再平衡是買賣資產以使您的投資組合恢復到目標權重的過程。 當一種資產的表現優於另一種資產時,它在投資組合中的權重就會增加,這可能會使持有者面臨比他們希望的更大的風險。投資組合需要定期重新平衡至目標權重,鎖定收益並重新投資於表現不佳的資產。 為什麼這有關係? 重新平衡很重要,因為隨著
Thumbnail
這樣分析完之後,你就會很恐怖的發現一個事實:這世界上所有的組織,只要「信息量」與「組織度」其中「任一」比「理想費拉」還要小,就註定無法通過時間的考驗,即使有無限的理想費拉供其寄生都不行,必須要有更高層次的秩序輸入才能替這些群體續命。這就是「神意秩序」存在的明證。
Thumbnail
槓桿型 ETF 可以買嗎?買槓桿型 ETF 不如直接買期貨?說說我的看法。
Thumbnail
股市原本就是一種循環,多頭,盤整到空頭!!!這一連串組合成一個完整的交易週期。
Thumbnail
股市原本就是一種循環,多頭,盤整到空頭!!!這一連串組合成一個完整的交易週期
Thumbnail
2019年全年的股息+債息應該可以領到約55萬左右台幣(6,242USD&16,000SGD計算),按2018年底市值算的現金收益率大約是6.6%左右。