次のようなオブジェクトのリストがあります。
const useCosts = { 224910186407: { デバイスID: "224910186407", 通貨: "GBP"、 年間使用量: 1480.81 }、 224910464538: { デバイスID: "224910464538", 通貨: "GBP"、 年間使用量: 617.36 }、 224910464577: { デバイスID: "224910464577", 通貨: "ユーロ"、 年間使用量: 522.3 } }
次のように通貨ごとに合計を計算します:
const totalyearlyCost = Object.values(usageCosts).reduce( (acc: { [key: string]: any }, stat: any) => { if (stat.currency && !acc[stat.currency]) { acc[統計通貨] = 0 } 戻る { ...はい、 [stat.currency!]: acc[stat.currency!] stat.yearlyUsage, } }、 {}、 )
次のようにオブジェクトを返します。
{ ユーロ: 522.3 英国ポンド: 2,098.17 }
次のような、通貨ごとのデバイスの合計数も返したいと考えています。
{ ユーロ: 522.3 (1 デバイス) 英国ポンド: 2,098.17 (デバイス 2 台) }
別のループを追加しようとしましたが、結果は期待どおりではありませんでした。
このミッションは 2 つのパートに分けると簡単になります。
まず、
次に、オブジェクトをループ処理し (reduce を使用することもできます)、これをグループ化された値を含む配列に縮小します。
配列の合計を取得します。文字列に${array.length} devices
を追加します。
リーリー