Mengumpulkan Objek dalam Tatasusunan Dengan Berkesan
Susunatur boleh mengandungi objek kompleks dengan berbilang sifat, menjadikannya perlu untuk mengumpulkan objek ini dengan cekap berdasarkan kriteria tertentu . Underscore.js menyediakan fungsi kumpulan mengikut kumpulan yang mudah, tetapi ia mungkin tidak memenuhi keperluan khusus.
Untuk mencapai pengelompokan seperti SQL, di mana nilai digabungkan dan bukannya berpecah, pendekatan tersuai selalunya diutamakan. Satu pelaksanaan sedemikian dibentangkan di bawah:
var groupBy = function(xs, key) { return xs.reduce(function(rv, x) { (rv[x[key]] = rv[x[key]] || []).push(x); return rv; }, {}); };
Fungsi ini menerima xs tatasusunan dan kunci kekunci kumpulan. Ia berulang ke atas elemen tatasusunan, mengumpulnya menjadi rv objek hasil. Setiap kumpulan dikenal pasti melalui nilai sifat utama.
Untuk menunjukkan, pertimbangkan tatasusunan objek berikut:
[ { 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" }, // ... (more objects) ]
Penghimpunan mengikut Fasa hasil:
console.log(groupBy(array, "Phase")); // => { // "Phase 1": [ // // Objects in Phase 1 // ], // "Phase 2": [ // // Objects in Phase 2 // ] // }
Pengumpulan mengikut Fasa dan Langkah menggabungkan nilai:
console.log(groupBy(array, "Phase", "Step")); // => { // "Phase 1": { // "Step 1": [ // // Objects in Phase 1, Step 1 // ], // "Step 2": [ // // Objects in Phase 1, Step 2 // ] // }, // "Phase 2": { // // Similar object structure for Phase 2 // } // }
Pendekatan ini menyediakan cara yang fleksibel dan cekap untuk mengumpulkan objek dalam tatasusunan. Dengan melaksanakan fungsi groupBy tersuai, anda mendapat kawalan ke atas logik kumpulan dan boleh melanjutkannya dengan mudah untuk mengendalikan senario yang lebih kompleks.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengumpulkan Objek dengan Cekap dalam Tatasusunan JavaScript Menggunakan Fungsi `groupBy` Tersuai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!