各reduce操作のインタラクション数をカウントします。
P粉191323236
2023-08-14 17:21:30
<p>次のようなオブジェクトのリストがあります。</p>
<pre class="brush:php;toolbar:false;">const useCosts = {
224910186407: {
デバイスID: "224910186407",
通貨: "GBP"、
年間使用量: 1480.81
}、
224910464538: {
デバイスID: "224910464538",
通貨: "GBP"、
年間使用量: 617.36
}、
224910464577: {
デバイスID: "224910464577",
通貨: "ユーロ"、
年間使用量: 522.3
}
}</pre>
<p>次のように通貨ごとに合計を計算します: </p>
<pre class="brush:php;toolbar:false;">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,
}
}、
{}、
)</pre>
<p>次のようにオブジェクトを返します。</p>
<pre class="brush:php;toolbar:false;">{
ユーロ: 522.3
英国ポンド: 2,098.17
}</pre>
<p>次のような、通貨ごとのデバイスの合計数も返したいと考えています。
<pre class="brush:php;toolbar:false;">{
ユーロ: 522.3 (1 デバイス)
英国ポンド: 2,098.17 (デバイス 2 台)
}</pre>
<p>別のループを追加しようとしましたが、結果は期待どおりではありませんでした。 </p>
このミッションは 2 つのパートに分けると簡単になります。
まず、
次に、オブジェクトをループ処理し (reduce を使用することもできます)、これをグループ化された値を含む配列に縮小します。
配列の合計を取得します。 文字列に ${array.length} devices
を追加します。
リーリー