V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  takemyhate  ›  全部回复第 1 页 / 共 1 页
回复总数  2
2023-05-22 10:07:59 +08:00
回复了 jacky0983 创建的主题 上海 华为云返现 20%,有人感兴趣嘛?
111
2023-05-18 10:59:39 +08:00
回复了 lyshine 创建的主题 编程 一道前端算法题, 想了要好久没想出来如何写 . 请大神指导一下
function findPath(data, target) {
let path = ""; // 用于存储路径

function traverse(node, currentPath) {
if (node.name === target) {
path = currentPath; // 找到目标节点时更新路径
return;
}

if (node.childs) {
for (let i = 0; i < node.childs.length; i++) {
const child = node.childs[i];
const newPath = currentPath ? `${currentPath} / ${child.name}` : child.name;
traverse(child, newPath); // 递归遍历子节点
}
}
}

traverse(data, "");

return path;
}

// 测试
var data = [
{
name: "手机",
childs: [
{
name: "iPhone",
childs: [
{ name: "iPhone X" },
{ name: "iPhone XR" },
{ name: "iPhone XS" },
],
},
{
name: "HUAWEI",
childs: [
{ name: "HUAWEI Mate 20" },
{ name: "HUAWEI Mate 20 X" },
{ name: "HUAWEI Mate 20 Pro" },
],
},
],
},
];

console.log(findPath(data[0], "HUAWEI Mate 20")); // 输出 "手机 / HUAWEI / HUAWEI Mate 20"
//findPath 函数接受两个参数:data 是树的根节点,target 是要查找的目标节点的名称。函数通过递归遍历树的节点,每次遍历时更新当前路径,并检查当前节点是否为目标节点,如果是则将路径存储到 path 变量中。最终返回得到的路径。这个可以适用于多层的数据结构,因为它通过递归方式遍历树的每个节点,不论树的深度有多大,都能正确地找到路径。
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2860 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 14ms · UTC 13:39 · PVG 21:39 · LAX 05:39 · JFK 08:39
Developed with CodeLauncher
♥ Do have faith in what you're doing.