Cara paling berkesan untuk mengumpulkan tatasusunan objek
P粉310754094
2023-08-21 14:34:06
<p>Apakah cara yang paling berkesan untuk mengumpulkan objek dalam tatasusunan? </p>
<p>Sebagai contoh, diberikan tatasusunan objek berikut: </p>
<pre class="brush:php;toolbar:false;">[
{ Fasa: "Fasa 1", Langkah: "Langkah 1", Tugas: "Tugas 1", Nilai: "5" },
{ Fasa: "Fasa 1", Langkah: "Langkah 1", Tugasan: "Tugas 2", Nilai: "10" },
{ Fasa: "Fasa 1", Langkah: "Langkah 2", Tugasan: "Tugas 1", Nilai: "15" },
{ Fasa: "Fasa 1", Langkah: "Langkah 2", Tugas: "Tugas 2", Nilai: "20" },
{ Fasa: "Fasa 2", Langkah: "Langkah 1", Tugasan: "Tugas 1", Nilai: "25" },
{ Fasa: "Fasa 2", Langkah: "Langkah 1", Tugasan: "Tugas 2", Nilai: "30" },
{ Fasa: "Fasa 2", Langkah: "Langkah 2", Tugasan: "Tugas 1", Nilai: "35" },
{ Fasa: "Fasa 2", Langkah: "Langkah 2", Tugasan: "Tugas 2", Nilai: "40" }
]</pre>
<p>Saya memaparkan maklumat ini dalam jadual. Saya mahu mengumpulkan mengikut kaedah yang berbeza tetapi saya mahu menjumlahkan nilainya. </p>
<p>Saya menggunakan fungsi groupby Underscore.js, yang berguna, tetapi tidak cukup memenuhi keperluan kerana saya tidak mahu "memisahkan" mereka tetapi "mencantumkan" mereka, lebih seperti kumpulan SQL dengan kaedah. </p>
<p>Apa yang saya mahukan ialah dapat menjumlahkan nilai tertentu jika perlu. </p>
<p>Jadi, jika saya mengumpulkan mengikut <kod>Fasa</kod>, saya ingin mendapatkan: </p>
<pre class="brush:php;toolbar:false;">[
{ Fasa: "Fasa 1", Nilai: 50 },
{ Fasa: "Fasa 2", Nilai: 130 }
]</pre>
<p>Jika saya mengumpulkan mengikut <kod>Fasa</kod>
<pre class="brush:php;toolbar:false;">[
{ Fasa: "Fasa 1", Langkah: "Langkah 1", Nilai: 15 },
{ Fasa: "Fasa 1", Langkah: "Langkah 2", Nilai: 35 },
{ Fasa: "Fasa 2", Langkah: "Langkah 1", Nilai: 55 },
{ Fasa: "Fasa 2", Langkah: "Langkah 2", Nilai: 75 }
]</pre>
<p>Adakah terdapat skrip yang berguna untuk mencapai ini, atau adakah saya perlu terus menggunakan Underscore.js dan melakukan penjumlahan dengan menggelung pada objek hasil? </p>
Menggunakan objek Peta ES6:
Mengenai Peta: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map
Jika anda ingin mengelak daripada menggunakan perpustakaan luaran, anda boleh melaksanakan versi asli
groupBy()
seperti ini: