的父根我有一个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先生和比尔的树状结构。我想创建一个函数来确定用户搜索的用户的根名称。
对于最简单的情况,如果他们搜索saxena,它会返回saxena。如果他们退还帐单,它将返回帐单。
对于更复杂的情况,如果用户在她下面搜索任何名字,则会返回saxena。例如,如果我搜索betten,akers,glovers或koya,则将返回saxena。
如果我搜索鲍勃,史密斯或好的话,账单将被退回。
这是我迄今的工作。我尝试使用递归,但由于某种原因,当我找到选定的名称时,我返回一个未定义的。
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/
有人可以帮我弄清楚,为什么我的递归函数不工作?
请直接插入JavaScript,请进入的问题你的问题。外部引用作为您的代码的唯一参考在StackOverflow中是不允许的,因为它们有随着时间的推移而消失或变化的习惯,这会使未来的读者无法使用该问题,并且Stackoverflow想成为信息的重要参考,而不仅仅是原来的人提出这个问题,也为很多人提出了这个问题。 – jfriend00 2015-01-27 00:26:26
你应该这样做,否则你的问题可能会被关闭。使用“编辑”链接修改您的问题,并将相关的代码插入到问题中。 – jfriend00 2015-01-27 00:32:36
好得多。现在你的问题有更长久的用处。 – jfriend00 2015-01-27 00:38:15