Apakah cara paling berkesan untuk mengumpulkan objek dalam tatasusunan?
Sebagai contoh, diberikan pelbagai objek ini:
[ { Phase: "Phase 1", Step: "Step 1", Task: "Task 1", Value: "5" }, { Phase: "Phase 1", Step: "Step 1", Task: "Task 2", Value: "10" }, { Phase: "Phase 1", Step: "Step 2", Task: "Task 1", Value: "15" }, { Phase: "Phase 1", Step: "Step 2", Task: "Task 2", Value: "20" }, { Phase: "Phase 2", Step: "Step 1", Task: "Task 1", Value: "25" }, { Phase: "Phase 2", Step: "Step 1", Task: "Task 2", Value: "30" }, { Phase: "Phase 2", Step: "Step 2", Task: "Task 1", Value: "35" }, { Phase: "Phase 2", Step: "Step 2", Task: "Task 2", Value: "40" } ]
Saya memaparkan maklumat ini dalam jadual. Saya ingin mengumpulkan mengikut kaedah yang berbeza tetapi saya ingin menjumlahkan nilainya.
Saya menggunakan Underscore.js untuk fungsi groupbynya, yang banyak membantu, tetapi tidak menyelesaikan keseluruhan masalah kerana saya tidak mahu mereka "berpecah" tetapi "bercantum", lebih seperti pendekatan SQL group by
.
Saya ingin dapat mengira jumlah nilai tertentu jika perlu.
Jadi jika saya buat groupby Phase
Saya menjangkakan untuk menerima:
[ { Phase: "Phase 1", Value: 50 }, { Phase: "Phase 2", Value: 130 } ]
Jika saya melaksanakan kumpulan Phase
/ Step
/
[ { Phase: "Phase 1", Step: "Step 1", Value: 15 }, { Phase: "Phase 1", Step: "Step 2", Value: 35 }, { Phase: "Phase 2", Step: "Step 1", Value: 55 }, { Phase: "Phase 2", Step: "Step 2", Value: 75 } ]
Adakah terdapat skrip yang berguna atau perlukah saya menggunakan Underscore.js dan gelung melalui objek hasil untuk mengira jumlah itu sendiri?
Gunakan 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 biasa
groupBy()
seperti ini: