Vue.js 開発では、ビューを表示するために再帰ツリー データを使用することが必要になることがよくあります。このプロセスでは、特定のノード オブジェクトを検索し、対応する操作を実行する必要がある場合があります。この記事では、このニーズを満たすために、ツリー データの検索に再帰を使用する方法を紹介します。
1. データ構造
メソッドの紹介を始める前に、まず一般的なツリー データ構造を見てみましょう:
{ "label": "Node 1", "children": [ { "label": "Node 1-1", "children": [] }, { "label": "Node 1-2", "children": [ { "label": "Node 1-2-1", "children": [] } ] } ] }, { "label": "Node 2", "children": [] }
上記のデータ構造は、単純な 2 次元 ルート ノードといくつかの子ノードを含む、レイヤーが入れ子になったツリー構造。
2. 検索方法
ツリー構造から特定のルールに従って条件を満たすノード オブジェクトを検索したいと考えています。具体的な検索方法は次のとおりです:
まず、2 つのパラメータを受け取るメソッドを定義する必要があります。第 1 パラメータは検索対象のツリー構造データ、第 2 パラメータは検索条件を示すオブジェクトですの。このオブジェクトの形式は以下のとおりです。
{ key: "label", value: "Node 1-2-1" }
このうち、key
は照合対象の属性名を表し、value
は照合対象の属性値を表します。
次に、再帰を使用してすべてのノードを走査し、条件を満たすノードを見つけることができます。具体的な実装方法は次のとおりです:
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; },
再帰的な実装方法は、各ノードを継続的に走査し、現在のノードが条件を満たしていれば現在のノードを返し、そうでない場合は子ノードを再帰的に検索し続けます。
3. 使用例
次に、Node 1-2-1# のデータ構造内の
label 値を見つける使用例を見てみましょう。 ## ノードの例:
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": [] }
以上がVue で再帰ツリー データを使用してオブジェクト メソッドを見つける方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。