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
Patricia Arquetteasal
2024-12-08 07:12:121044semak imbas

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: [ { ... }, { ... } ],
      },
  },
...
]

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
    }));
}

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"));

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!

Kenyataan:
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