Rumah > hujung hadapan web > tutorial js > Bagaimanakah Saya Boleh Mengumpul Objek Bersarang dengan Kecekapan dengan Kekunci Tersuai Menggunakan Lodash?

Bagaimanakah Saya Boleh Mengumpul Objek Bersarang dengan Kecekapan dengan Kekunci Tersuai Menggunakan Lodash?

Patricia Arquette
Lepaskan: 2024-12-08 07:12:12
asal
996 orang telah melayarinya

How Can I Efficiently Group Nested Objects by Custom Keys Using Lodash?

Mengumpulkan Objek Bersarang mengikut Kekunci Tersuai

Untuk memudahkan pemaparan, tatasusunan objek mesti ditukar kepada objek kumpulan dengan nama kunci tertentu. Objektifnya adalah untuk mencipta output di mana objek dikumpulkan oleh kekunci yang ditetapkan ini, seperti yang dilihat di bawah:

const output = [
  {
    tab: 'Results',
    sections: [
      {
         section: '2017',
         items: [ { 'item that belongs here' }, { ... } ],
      },
  },
  {
    tab: 'Reports',
    sections: [
      {
         section: 'Marketing',
         items: [ { ... }, { ... } ],
      },
  },
...
]
Salin selepas log masuk

Pendekatan Pelaksanaan

Transformasi ini boleh dicapai dengan menggabungkan fungsi Lodash _.map dan _.groupBy.

function groupAndMap(items, itemKey, childKey, predic){
    return _.map(_.groupBy(items,itemKey), (obj,key) => ({
        [itemKey]: key,
        [childKey]: (predic && predic(obj)) || obj
    }));
}
Salin selepas log masuk

The groupAndMap fungsi mengambil empat parameter:

  • item: Tatasusunan objek untuk dikumpulkan.
  • itemKey: Kunci untuk mengumpulkan item mengikut.
  • childKey: The key untuk digunakan untuk kumpulan bersarang.
  • ramalan: Predikat pilihan untuk digunakan pada bersarang kumpulan.

Fungsi mengumpulkan item terlebih dahulu mengikut itemKey menggunakan _.groupBy. Kemudian, ia berulang ke atas objek terkumpul dan mencipta objek baharu dengan itemKey dan childKey. Jika parameter predik disediakan, ia menggunakan predikat pada kumpulan bersarang.

Contoh Penggunaan

Untuk menggunakan fungsi ini untuk mengumpulkan objek yang diberikan, panggilnya seperti berikut :

var result = groupAndMap(items,"tab","sections", 
                   arr => groupAndMap(arr,"section", "items"));
Salin selepas log masuk

Ini akan mengumpulkan item mengikut kekunci "tab" dan "bahagian", menghasilkan yang diingini keluaran.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengumpul Objek Bersarang dengan Kecekapan dengan Kekunci Tersuai Menggunakan Lodash?. 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