gpt4 book ai didi

javascript - 树递归: How to get the parent root of the selected tree node

转载 作者:行者123 更新时间:2023-11-28 19:24:21 25 4
gpt4 key购买 nike

我有一个 json 对象的树状结构

{
"saxena": {
"chewning": {
"betten": {},
"ching": {},
"kelley": {}
},
"kobrinsky": {
"karniely": {},
"naveh": {},
"rozenfeld": {},
"shalom": {}
},
"schriever": {
"brinker": {},
"mcleland": {},
"merrick": {}
},
"vacant": {
"akers": {},
"carlton": {
"marvin": {}
},
"fox": {
"glover": {
"clements": {},
"koya": {}
},
"holden": {}
}
}
},
"bill": {
"phil": {
"bob": {},
"smith": {},
"hello": {}
},
"bye": {
"ok": {},
"hmm": {},
"no": {},
"alright": {}
}
}
}

根名称是 saxena 和 bill。我想创建一个函数来确定用户搜索的根名称。

对于最简单的情况,如果他们搜索 saxena,它将返回 saxena。如果他们退回账单,它就会退回账单。

对于更复杂的情况,如果用户搜索 saxena 下的任何名称,则会返回 saxena。

例如,如果我搜索 betten、akers、glovers 或 koya,则会返回 saxena。

如果我搜索 bob、smith 或 alright,账单将被返回。

这是我迄今为止的工作。我尝试使用递归,但由于某种原因,当我找到所选名称时,我返回一个未定义的值。

var findRootName = function(data, ltmName) {
for (var key in data) {
if (key == ltmName) {
return key;
} else {
findNode(data[key], ltmName);
}
}
}

var findNode = function(data, ltmName) {
for (var key in data) {
if (key == ltmName) {
return key;
} else {
findNode(data[key], ltmName);
}
}
}

http://jsfiddle.net/gthnfta7/7/

有人可以帮助我找出为什么我的递归函数不起作用吗?

最佳答案

问题是,如果找到节点,您不会返回任何内容。您可以通过这样编写来简化您的函数:

var findParent = function(data, childName) {
for (var key in data) {
if (key === childName || findParent(data[key], childName)) {
return key;
}
}
};

关于javascript - 树递归: How to get the parent root of the selected tree node,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28160993/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com