計算每個reduce運算的互動次數
P粉191323236
2023-08-14 17:21:30
<p>我有一個物件列表,如下:</p>
<pre class="brush:php;toolbar:false;">const usageCosts = {
224910186407: {
deviceId: "224910186407",
currency: "GBP",
yearlyUsage: 1480.81
},
224910464538: {
deviceId: "224910464538",
currency: "GBP",
yearlyUsage: 617.36
},
224910464577: {
deviceId: "224910464577",
currency: "EUR",
yearlyUsage: 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[stat.currency] = 0
}
return {
...acc,
[stat.currency!]: acc[stat.currency!] stat.yearlyUsage,
}
},
{},
)</pre>
<p>它傳回一個對象,如下:</p>
<pre class="brush:php;toolbar:false;">{
EUR: 522.3
GBP: 2,098.17
}</pre>
<p>我還想回傳每種貨幣的裝置總數,類似:</p>
<pre class="brush:php;toolbar:false;">{
EUR: 522.3 (1個設備)
GBP: 2,098.17 (2個設備)
}</pre>
<p>嘗試增加另一個循環,但結果不如預期。 </p>
這個任務分成兩個部分會比較容易。
首先,將其
reduce
為一個包含分組值的陣列。然後循環遍歷(也可以使用reduce)對象,並獲取數組的總和,並將
${array.length} devices
添加到字串中: