suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Zählen Sie die Anzahl der Interaktionen für jeden Reduzierungsvorgang

<p>Ich habe eine Liste von Objekten wie folgt:</p> <pre class="brush:php;toolbar:false;">const verwendenCosts = { 224910186407: { Geräte-ID: „224910186407“, Währung: „GBP“, jährliche Nutzung: 1480,81 }, 224910464538: { Geräte-ID: „224910464538“, Währung: „GBP“, jährliche Nutzung: 617,36 }, 224910464577: { Geräte-ID: „224910464577“, Währung: „EUR“, jährliche Nutzung: 522,3 } }</pre> <p>Ich errechne eine Summe nach Währung, etwa so: </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 } zurückkehren { ...gemäß, [stat.currency!]: acc[stat.currency!] + stat.yearlyUsage, } }, {}, )</pre> <p>Es gibt ein Objekt wie folgt zurück: </p> <pre class="brush:php;toolbar:false;">{ EUR: 522,3 GBP: 2.098,17 }</pre> <p>Ich möchte auch die Gesamtzahl der Geräte pro Währung zurückgeben, etwa so: </p> <pre class="brush:php;toolbar:false;">{ EUR: 522,3 (1 Gerät) GBP: 2.098,17 (2 Geräte) }</pre> <p>Ich habe versucht, eine weitere Schleife hinzuzufügen, aber die Ergebnisse waren nicht wie erwartet. </p>
P粉191323236P粉191323236469 Tage vor495

Antworte allen(1)Ich werde antworten

  • P粉481815897

    P粉4818158972023-08-15 15:34:26

    这个任务分为两个部分会更容易。

    首先,将其reduce为一个包含分组值的数组。

    然后循环遍历(也可以使用reduce)对象,并获取数组的总和,并将${array.length} devices添加到字符串中:

    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)

    Antwort
    0
  • StornierenAntwort