Rumah > hujung hadapan web > tutorial js > Bagaimana untuk Menghimpunkan Objek mengikut Pelbagai Sifat dan Mengagregatkan Nilainya dalam JavaScript?

Bagaimana untuk Menghimpunkan Objek mengikut Pelbagai Sifat dan Mengagregatkan Nilainya dalam JavaScript?

Barbara Streisand
Lepaskan: 2024-11-10 12:12:03
asal
425 orang telah melayarinya

How to Group Objects by Multiple Properties and Aggregate Their Values in JavaScript?

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);
Salin selepas log masuk

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 }
]
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan