<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 有疑問或是想了解什麼都可以留言,我如果有空會回覆~


留言
avatar-img
留言分享你的想法!
avatar-img
卡比的工程師之旅的沙龍
7會員
15內容數
開發之路有你有我有卡比,收錄各種開發的技術分享與疑難雜症解★☆
2024/08/07
首先確定VS Code的版本,如果你的版本跟我一樣是1.92.0那麼你可以參考我的作法...
Thumbnail
2024/08/07
首先確定VS Code的版本,如果你的版本跟我一樣是1.92.0那麼你可以參考我的作法...
Thumbnail
2024/01/04
問ChatGPT前端專案架構建議
Thumbnail
2024/01/04
問ChatGPT前端專案架構建議
Thumbnail
看更多
你可能也想看
Thumbnail
嗨~我是夢夢 ♡ 每年到這個時候,我都會默默開始列購物清單 畢竟「蝦皮雙11」真的太好買啦 🛒✨ 這次就想跟大家分享幾樣我自己平常有在用、也準備趁雙11補貨的好物, 順便聊聊我最近開始玩的「蝦皮分潤計畫」,怎麼讓分享變成小小被動收入 💰
Thumbnail
嗨~我是夢夢 ♡ 每年到這個時候,我都會默默開始列購物清單 畢竟「蝦皮雙11」真的太好買啦 🛒✨ 這次就想跟大家分享幾樣我自己平常有在用、也準備趁雙11補貨的好物, 順便聊聊我最近開始玩的「蝦皮分潤計畫」,怎麼讓分享變成小小被動收入 💰
Thumbnail
分享如何透過蝦皮解決毛孩(多芬)因換季和食物引發的皮膚過敏問題,從選用單一蛋白質的火雞肉主食,到利用寵物防舔衣舒緩傷口,並結合蝦皮雙11購物節的優惠資訊與蝦皮分潤計畫的實用教學。
Thumbnail
分享如何透過蝦皮解決毛孩(多芬)因換季和食物引發的皮膚過敏問題,從選用單一蛋白質的火雞肉主食,到利用寵物防舔衣舒緩傷口,並結合蝦皮雙11購物節的優惠資訊與蝦皮分潤計畫的實用教學。
Thumbnail
高中數學主題練習—分點計算
Thumbnail
高中數學主題練習—分點計算
Thumbnail
高中數學主題練習—根式化簡
Thumbnail
高中數學主題練習—根式化簡
Thumbnail
高中數學主題練習—根式化簡
Thumbnail
高中數學主題練習—根式化簡
Thumbnail
了解這些運算子及其優先等級有助於更好地理解和編寫 JavaScript 代碼
Thumbnail
了解這些運算子及其優先等級有助於更好地理解和編寫 JavaScript 代碼
Thumbnail
高中數學主題練習—最適直線計算
Thumbnail
高中數學主題練習—最適直線計算
Thumbnail
高中數學主題練習—直角座標與極座標轉換
Thumbnail
高中數學主題練習—直角座標與極座標轉換
Thumbnail
高中數學主題練習—求空間中直線參數式
Thumbnail
高中數學主題練習—求空間中直線參數式
Thumbnail
高中數學主題練習—求空間中平面
Thumbnail
高中數學主題練習—求空間中平面
Thumbnail
高中數學主題練習—求空間中平面
Thumbnail
高中數學主題練習—求空間中平面
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News