Cara Melintasi Objek JavaScript Bersarang: Rekursif vs. Bukan Rekursif?

Susan Sarandon
Lepaskan: 2024-11-02 05:14:02
asal
824 orang telah melayarinya

How to Traverse Nested JavaScript Objects: Recursive vs. Non-Recursive?

Menavigasi Objek JavaScript Bersarang: Panduan Komprehensif

Lelaran melalui objek JavaScript yang kompleks dan bersarang boleh menimbulkan cabaran, terutamanya apabila anda perlu mendapatkan semula objek bersarang tertentu berdasarkan pengecam rentetan yang disediakan. Dalam artikel ini, kami akan membimbing anda melalui pendekatan menyeluruh untuk melintasi objek bersarang dengan berkesan.

Untuk menggambarkan cabaran, mari pertimbangkan struktur objek bersarang berikut:

var cars = {
  label: 'Autos',
  subs: [
    {
      label: 'SUVs',
      subs: []
    },
    {
      label: 'Trucks',
      subs: [
        {
          label: '2 Wheel Drive',
          subs: []
        },
        {
          label: '4 Wheel Drive',
          subs: [
            {
              label: 'Ford',
              subs: []
            },
            {
              label: 'Chevrolet',
              subs: []
            }
          ]
        }
      ]
    },
    {
      label: 'Sedan',
      subs: []
    }
  ]
};
Salin selepas log masuk

Pendekatan Bukan Rekursif

(Diperkenalkan pada 2023)

Untuk pendekatan bukan rekursif, kita boleh menggunakan tindanan untuk melintasi objek:

const iterate = (obj) => {
  const stack = [obj];
  while (stack.length > 0) {
    const currentObj = stack.pop();
    Object.keys(currentObj).forEach(key => {
      console.log(`key: ${key}, value: ${currentObj[key]}`);
      if (typeof currentObj[key] === 'object' && currentObj[key] !== null) {
        stack.push(currentObj[key]);
      }
    });
  }
};
Salin selepas log masuk

Pendekatan Rekursif

Untuk pendekatan rekursif yang menyediakan lelaran mendalam, kami boleh memanfaatkan Object.keys():

const iterate = (obj) => {
  Object.keys(obj).forEach(key => {
    console.log(`key: ${key}, value: ${obj[key]}`);

    if (typeof obj[key] === 'object' && obj[key] !== null) {
      iterate(obj[key]);
    }
  });
};
Salin selepas log masuk

Kedua-dua pendekatan menyediakan cara yang cekap untuk melintasi JavaScript bersarang objek. Sama ada anda memilih pendekatan bukan rekursif atau rekursif bergantung pada keperluan dan pilihan khusus anda.

Atas ialah kandungan terperinci Cara Melintasi Objek JavaScript Bersarang: Rekursif vs. Bukan Rekursif?. 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!