Perjalanan Pokok Objek JSON dalam JavaScript tanpa Pustaka Luaran
Melintasi pepohon objek JSON boleh menjadi tugas biasa apabila bekerja dengan struktur data yang kompleks . Walaupun JavaScript menyediakan perpustakaan fungsi yang kaya untuk bekerja dengan objek, tiada perpustakaan khusus untuk melintasi pokok objek. Ini mungkin kelihatan seperti tugas yang mudah, tetapi ia sering membawa kepada mencipta semula roda.
Tidak seperti XML, yang menawarkan pelbagai pendekatan berasaskan DOM untuk melintasi pokok, JavaScript tidak mempunyai mekanisme yang serupa untuk objek JSON. Artikel ini membentangkan penyelesaian yang cekap dan mudah untuk melintasi pokok objek JSON menggunakan fungsi JavaScript tulen.
Fungsi Traversal Rekursif Tersuai
Penyelesaian melibatkan penciptaan fungsi rekursif tersuai yang merentasi pokok objek. Fungsi traverse() mengambil dua parameter:
Fungsi ini berulang melalui setiap sifat dan nilainya dalam objek. Untuk setiap pasangan nilai harta, ia memanggil fungsi panggil balik untuk memproses data. Jika nilai adalah objek lain dan bukan nol, fungsi itu secara rekursif memanggil dirinya sendiri untuk melintasi objek kanak-kanak.
Contoh Penggunaan
Untuk menunjukkan penggunaan, mari kita pertimbangkan perkara berikut Objek JSON:
var o = { foo:"bar", arr:[1,2,3], subo: { foo2:"bar2" } };
Kami mentakrifkan fungsi process() untuk log kunci dan nilai setiap nod:
function process(key,value) { console.log(key + " : "+value); }
Sekarang, kita boleh melintasi pokok objek menggunakan traverse():
traverse(o,process);
Ini akan mengeluarkan yang berikut:
foo : bar arr : 1 arr : 2 arr : 3 subo : [object Object] foo2 : bar2
Perhatikan bahawa output termasuk kunci subobjek tetapi bukan sifatnya. Ini kerana fungsi traverse() tidak melintasi subobjek secara rekursif. Untuk mencapai traversal yang mendalam, seseorang perlu mengubah suai kod dengan sewajarnya.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melintasi Pokok Objek JSON dengan Cekap dalam JavaScript Tulen?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!