【发布时间】:2015-03-25 12:11:12
【问题描述】:
我有一个 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。
例如,如果我搜索 betten、akers、glovers 或 koya,将返回 saxena。
如果我搜索 bob、smith 或 alright,bill 将被退回。
这是我迄今为止的工作。我尝试使用递归,但由于某种原因,当我找到所选名称时,我返回一个未定义的。
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 希望成为重要的信息参考,而不仅仅是最初提出问题的人,但也适用于后来的许多人。
-
这次你应该这样做,否则你的问题可能会被关闭。使用“编辑”链接修改您的问题并将相关代码插入问题中。
-
好多了。现在您的问题具有更持久的用处。
标签: javascript json recursion dictionary tree