Mengumpulkan Objek mengikut Berbilang Sifat dan Mengagregatkan Nilainya
Mengumpulkan elemen dalam tatasusunan dengan berbilang sifat adalah penting untuk organisasi dan ringkasan data. Untuk menangani keperluan khusus untuk mengumpulkan objek mengikut bentuk dan warna serta mengagregatkan nilainya, kami boleh memanfaatkan kuasa kaedah terbina dalam JavaScript.
Langkah 1: Tatasusunan#mengurangkan
Kaedah Array#reduce menyediakan cara yang ringkas dan cekap untuk mengulang tatasusunan, mengumpul satu output daripada elemen individu. Dalam kes ini, kita boleh menggunakannya untuk mengumpul objek berdasarkan gabungan bentuk dan sifat warnanya.
Langkah 2: Objek Pembantu
Kami menggunakan objek pembantu untuk menjejaki gabungan bentuk dan warna yang unik. Untuk setiap objek dalam tatasusunan, kami menyemak sama ada gabungan itu wujud dalam pembantu dengan menggabungkan sifat bentuk dan warna. Jika ia tidak wujud, kami mencipta entri baharu dalam objek pembantu dan pada masa yang sama menolak salinan objek semasa ke dalam tatasusunan hasil.
Langkah 3: Pengagregatan Nilai
Jika gabungan serupa sudah wujud dalam objek pembantu, kami hanya menambah nilai terpakai dan contoh entri yang sepadan, dengan berkesan mengagregatkan nilai daripada objek semasa.
Langkah 4: Penyalinan Objek
Untuk mengelak daripada mengubah suai objek asal dalam tatasusunan, kami mencipta salinan menggunakan Object.assign. Ini memastikan bahawa objek pembantu mengandungi salinan bebas objek, membolehkan kami mengagregatkan nilai secara berasingan.
Pelaksanaan:
const arr = [ { shape: 'square', color: 'red', used: 1, instances: 1 }, { shape: 'square', color: 'red', used: 2, instances: 1 }, { shape: 'circle', color: 'blue', used: 0, instances: 0 }, { shape: 'square', color: 'blue', used: 4, instances: 4 }, { shape: 'circle', color: 'red', used: 1, instances: 1 }, { shape: 'circle', color: 'red', used: 1, instances: 0 }, { shape: 'square', color: 'blue', used: 4, instances: 5 }, { shape: 'square', color: 'red', used: 2, instances: 1 }, ]; const helper = {}; const result = arr.reduce((r, o) => { const key = o.shape + '-' + o.color; if (!helper[key]) { helper[key] = Object.assign({}, o); // create a copy of o r.push(helper[key]); } else { helper[key].used += o.used; helper[key].instances += o.instances; } return r; }, []); console.log(result);
Output:
[ { shape: 'square', color: 'red', used: 5, instances: 3 }, { shape: 'circle', color: 'red', used: 2, instances: 1 }, { shape: 'square', color: 'blue', used: 11, instances: 9 }, { shape: 'circle', color: 'blue', used: 0, instances: 0 } ]
Penyelesaian ini mengagregatkan objek mengikut bentuk dan warna secara berkesan, memberikan ringkasan data yang padu.
Atas ialah kandungan terperinci Bagaimana untuk Menghimpunkan Objek mengikut Pelbagai Sifat dan Mengagregatkan Nilainya dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!