Rumah  >  Artikel  >  hujung hadapan web  >  Cara Melintasi Objek JavaScript Bersarang: Rekursif vs. Bukan Rekursif?

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

Susan Sarandon
Susan Sarandonasal
2024-11-02 05:14:02828semak imbas

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: []
    }
  ]
};

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

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

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!

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