我试图返回一个像这样的JSON对象结构中的特定节点
{
"id":"0",
"children":[
{
"id":"1",
"children":[...]
},
{
"id":"2",
"children":[...]
}
]
}
因此,这是一个树状的儿童-父母关系。每个 节点 都有唯一的ID。我试图找到一个特定 节点 这样
function findNode(id, currentNode) {
if (id == currentNode.id) {
return currentNode;
} else {
currentNode.children.forEach(function (currentChild) {
findNode(id, currentChild);
});
}
}
我通过执行搜索findNode("10", rootNode)
。但是,即使搜索找到匹配项,该函数也会始终返回undefined
。我有一种不好的感觉,即递归函数在找到匹配项后不会停止并继续运行finally返回,undefined
因为在后者的递归执行中,它没有到达返回点,但是我不确定如何解决这个问题。
请帮忙!
递归搜索时,必须通过返回结果将其传回。不过,您没有返回的结果findNode(id, currentChild)
。
function findNode(id, currentNode) {
var i,
currentChild,
result;
if (id == currentNode.id) {
return currentNode;
} else {
// Use a for loop instead of forEach to avoid nested functions
// Otherwise "return" will not work properly
for (i = 0; i < currentNode.children.length; i += 1) {
currentChild = currentNode.children[i];
// Search in the current child
result = findNode(id, currentChild);
// Return the result if the node has been found
if (result !== false) {
return result;
}
}
// The node has not been found and we have no more options
return false;
}
}
问题内容: 我的应用程序中有一个JSON字符串/对象。 我的应用程序中有一个过滤器框,当我在该框中输入名称时,我们必须过滤该对象并显示结果。 例如,如果用户键入“名称”并点击搜索,那么我们必须在JSON对象中搜索全名并返回数组,就像MySQL搜索一样。 我的问题是用字符串过滤json对象并返回数组。 问题答案: 您可以遍历数组并找到匹配项:
问题内容: 我试图找出如何递归地在此JSON对象中搜索节点。我尝试了一些但无法获得的东西: 这是我无法使用的解决方案,可能是因为当子节点在数组中时,第一个节点只是一个值: 问题答案: 您的代码只是缺少一个循环来检查数组中节点的每个子节点。此递归函数将返回节点的属性,或者如果树中不存在标签,则返回该属性: 您还可以使用显式堆栈进行迭代,该堆栈更快,更凉爽并且不会导致堆栈溢出:
我正在构建一个实用程序函数,它应该搜索属性名称,并在找到后返回其值。它应该递归地执行此操作: 但是,控制台日志将永远消失,浏览器将崩溃。我做错了什么? 编辑: 这就是我调用函数的方式:
问题内容: 我很难将Flask / Python变量传递给Javascript。 基本上,我是从MySQL导入的,并尝试以三种不同的方式呈现返回值。 那是我的dict项目上运行以下命令时的输出。 此方法不好,但是我添加了详细信息,根本不是正确的格式。 我直接将python dict传递给看起来像这样的模板 然后在模板方面,我尝试了以下JavaScript行 没有一个可以一起工作或单独工作。 我也尝
本文向大家介绍JavaScript中的对象与JSON,包括了JavaScript中的对象与JSON的使用技巧和注意事项,需要的朋友参考一下 简介 JSON即JavaScript Object Natation,它是一种轻量级的数据交换格式,非常适合于服务器与 JavaScript 的交互。 JSON是一种数据交换格式,像XML和YAML一样是一种在各种不同语言间传递结构化信息的方式。从另一方面来说
我有一个如下所示的对象;