Rumah > hujung hadapan web > tutorial js > Bagaimanakah Saya Boleh Mengumpulkan Objek dengan Cekap dalam Tatasusunan JavaScript Menggunakan Fungsi `groupBy` Tersuai?

Bagaimanakah Saya Boleh Mengumpulkan Objek dengan Cekap dalam Tatasusunan JavaScript Menggunakan Fungsi `groupBy` Tersuai?

DDD
Lepaskan: 2024-12-30 12:02:14
asal
132 orang telah melayarinya

How Can I Efficiently Group Objects in JavaScript Arrays Using a Custom `groupBy` Function?

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

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

Penghimpunan mengikut Fasa hasil:

console.log(groupBy(array, "Phase"));
// => {
//   "Phase 1": [
//     // Objects in Phase 1
//   ],
//   "Phase 2": [
//     // Objects in Phase 2
//   ]
// }
Salin selepas log masuk

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

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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan