Lelaran melalui Objek JavaScript Bersarang
Menyalur melalui objek JavaScript bersarang boleh mencabar, terutamanya apabila anda perlu mendapatkan semula objek tertentu yang dikenal pasti oleh nilai harta tertentu. Pertimbangkan contoh di bawah:
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 Berulang Rekursif:
Untuk melintasi secara mendalam melalui hierarki objek, anda boleh menggunakan pendekatan rekursif:
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]) } }) }
Fungsi ini berulang secara rekursif melalui objek, mencetak pasangan nilai kunci pada setiap tahap. Jika sifat yang ditemui memegang objek lain, fungsi itu memanggil dirinya sendiri dengan objek itu sebagai argumen.
Pendekatan Lelaran Bukan Rekursif:
Pendekatan bukan rekursif alternatif melibatkan menggunakan struktur data tindanan:
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]); } }); } };
Fungsi ini berulang melalui hierarki objek dengan menggunakan timbunan. Ia memunculkan elemen terakhir dari timbunan dan melelang melalui sifatnya. Jika sesuatu sifat memegang objek, ia menolak objek itu ke tindanan untuk lelaran selanjutnya.
Atas ialah kandungan terperinci Bagaimanakah Anda Boleh Mengulang Melalui Objek JavaScript Bersarang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!