found() 函数是 Yuka.js 库中深度优先搜索(DFS)算法的主要部分之一。该函数用于在给定的根节点上执行 DFS,并返回指定目标对象是否可达的路径。
found(rootNode, target[, options])
rootNode
:需要进行 DFS 的根节点。target
:目标节点。可以是 object 或 function 类型。options
:可选参数。用于设置搜索的选项。选项对象包含以下属性:
maxDepth
:搜索的深度限制,防止无限递归。默认值为 Infinity
。excludeRoot
:指示算法是否包含根节点的布尔值。默认为 false
。如果找到目标,函数将返回代表其的路径数组。否则返回 null
。
以下是基本的例子:
import { found } from 'yuka';
const rootNode = { name: 'A', children: [{ name: 'B' }, { name: 'C', children: [{ name: 'D' }] }] };
const target = { name: 'D' };
const path = found(rootNode, target);
console.log(path); // [{name: 'A'}, {name: 'C'}, {name: 'D'}]
您也可以传递一个函数作为目标参数:
import { found } from 'yuka';
const rootNode = { name: 'A', children: [{ name: 'B' }, { name: 'C', children: [{ name: 'D' }] }] };
const target = node => node.name === 'D';
const path = found(rootNode, target);
console.log(path); // [{name: 'A'}, {name: 'C'}, {name: 'D'}]
这里,我们定义了一个函数,该函数接受一个节点并确定它是否为目标。在本例中,该函数检查节点的 name
属性是否等于 D
。
target
参数可以是一个对象,也可以是一个函数,但不能同时是两个。null
,而不是一个包含根节点的路径数组。要包含根节点,必须将 excludeRoot
选项设置为 false
。