Dalam pembangunan Vue.js, selalunya perlu menggunakan data pokok rekursif untuk memaparkan paparan. Dalam proses ini, kita mungkin perlu mencari objek nod tertentu dan melakukan operasi yang sepadan. Artikel ini akan memperkenalkan kaedah menggunakan rekursi untuk carian data pokok untuk memenuhi keperluan ini.
1. Struktur data
Sebelum memperkenalkan kaedah, mari kita lihat struktur data pokok biasa:
{ "label": "Node 1", "children": [ { "label": "Node 1-1", "children": [] }, { "label": "Node 1-2", "children": [ { "label": "Node 1-2-1", "children": [] } ] } ] }, { "label": "Node 2", "children": [] }
Struktur data di atas mewakili satu ringkasan Struktur pokok bersarang dua peringkat, yang mengandungi nod akar dan beberapa nod anak.
2. Kaedah carian
Kami berharap dapat mencari objek nod yang memenuhi syarat dalam struktur pokok melalui peraturan tertentu. Kaedah carian khusus adalah seperti berikut:
Pertama, kita perlu mentakrifkan kaedah yang menerima dua parameter Parameter pertama ialah data struktur pokok yang akan dicari . Format objek ini adalah seperti berikut:
{ key: "label", value: "Node 1-2-1" }
di mana, key
mewakili nama atribut yang akan dipadankan dan value
mewakili nilai atribut yang akan dipadankan.
Kemudian, kita boleh menggunakan rekursi untuk melintasi semua nod dan mencari nod yang memenuhi syarat. Kaedah pelaksanaan khusus adalah seperti berikut:
findByCondition(data, condition) { let result = null; data.forEach(node => { if (node[condition.key] === condition.value) { result = node; } else if (node.children) { result = this.findByCondition(node.children, condition); } if (result) { return; } }); return result; },
Kaedah pelaksanaan rekursif adalah untuk terus melintasi setiap nod Jika nod semasa memenuhi syarat, kemudian kembalikan nod semasa, jika tidak, teruskan mencari nod anak secara rekursif. .
3. Contoh Penggunaan
Seterusnya, mari lihat contoh penggunaan, mengambil contoh mencari nod dengan nilai label
dalam struktur data: Node 1-2-1
let data = [ { "label": "Node 1", "children": [ { "label": "Node 1-1", "children": [] }, { "label": "Node 1-2", "children": [ { "label": "Node 1-2-1", "children": [] } ] } ] }, { "label": "Node 2", "children": [] } ]; let condition = { key: "label", value: "Node 1-2-1" }; let result = this.findByCondition(data, condition); console.log(result);
{ "label": "Node 1-2-1", "children": [] }
Atas ialah kandungan terperinci Cara menggunakan data pokok rekursif untuk mencari kaedah objek dalam Vue. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!