Compter le nombre d'interactions pour chaque opération de réduction
P粉191323236
P粉191323236 2023-08-14 17:21:30
0
1
387

J'ai une liste d'objets comme suit :

const utilisationCosts = { 224910186407 : { ID de l'appareil : "224910186407", devise : "GBP", Utilisation annuelle : 1480,81 }, 224910464538 : { ID de l'appareil : "224910464538", devise : "GBP", Utilisation annuelle : 617,36 }, 224910464577 : { ID de l'appareil : "224910464577", devise : "EUR", Utilisation annuelle : 522,3 } } 

Je fais une somme par devise, comme ceci :

const totalYearlyCost = Object.values(usageCosts).reduce( (acc : { [clé : chaîne] : n'importe quel }, stat : n'importe quel) => if (stat.currency && !acc[stat.currency]) { acc[stat.devise] = 0 } retour { ...acc, [stat.currency!] : acc[stat.currency!] + stat.yearlyUsage, } }, {}, ) 

Il renvoie un objet comme suit :

{ EUR : 522,3 GBP : 2 098,17 } 

Je souhaite également renvoyer le nombre total d'appareils par devise, quelque chose comme :

{ EUR : 522,3 (1 appareil) GBP : 2 098,17 (2 appareils) } 

J'ai essayé d'ajouter une autre boucle, mais les résultats n'étaient pas ceux attendus.

P粉191323236
P粉191323236

répondre à tous (1)
P粉481815897

Cette tâche sera plus facile si elle est divisée en deux parties.

Tout d'abord, convertissez-lereduceen un tableau contenant les valeurs groupées.

Ensuite, bouclez (vous pouvez également utiliser réduire) l'objet etobtenez la sommedu tableau et ajoutez${array.length} devicesà la chaîne :

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 } } let grouped = Object.values(usageCosts).reduce((p, c) => { if (!p[c.currency]) p[c.currency] = []; p[c.currency].push(c.yearlyUsage); return p; }, {}); for (var key in grouped) { grouped[key] = `${grouped[key].reduce((a,b)=>a+b)} (${grouped[key].length}) devices`; } console.log(grouped)
    Derniers téléchargements
    Plus>
    effets Web
    Code source du site Web
    Matériel du site Web
    Modèle frontal
    À propos de nous Clause de non-responsabilité Sitemap
    Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!