Rumah  >  Soal Jawab  >  teks badan

Kira bilangan interaksi untuk setiap operasi pengurangan

<p>Saya mempunyai senarai objek seperti berikut: </p> <pre class="brush:php;toolbar:false;">const usageCosts = { 224910186407: { ID peranti: "224910186407", mata wang: "GBP", tahunanPenggunaan: 1480.81 }, 224910464538: { ID peranti: "224910464538", mata wang: "GBP", tahunanPenggunaan: 617.36 }, 224910464577: { ID peranti: "224910464577", mata wang: "EUR", tahunanPenggunaan: 522.3 } }</pre> <p>Saya membuat jumlah mengikut mata wang, seperti ini: </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 } kembali { ... acc, [stat.currency!]: acc[stat.currency!] + stat.yearlyPenggunaan, } }, {}, )</pra> <p>Ia mengembalikan objek seperti berikut: </p> <pre class="brush:php;toolbar:false;">{ EUR: 522.3 GBP: 2,098.17 }</pre> <p>Saya juga ingin mengembalikan jumlah bilangan peranti bagi setiap mata wang, seperti: </p> <pre class="brush:php;toolbar:false;">{ EUR: 522.3 (1 peranti) GBP: 2,098.17 (2 peranti) }</pre> <p>Cuba menambah gelung lain, tetapi hasilnya tidak seperti yang dijangkakan. </p>
P粉191323236P粉191323236404 hari yang lalu419

membalas semua(1)saya akan balas

  • P粉481815897

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

    Tugas ini akan menjadi lebih mudah jika dibahagikan kepada dua bahagian.

    Mula-mula, tukarkannya reduce kepada tatasusunan yang mengandungi nilai terkumpul.

    Kemudian gelungkan (anda juga boleh menggunakan reduce) objek dan dapatkan jumlah tatasusunan dan tambah ${array.length} devices pada rentetan:

    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)

    balas
    0
  • Batalbalas