Javascript 在json中搜索多维对象时,如何跟踪对象父对象?
下面是我实现搜索的功能。我的问题是我需要跟踪我必须通过哪些行来查找URL。我正在构建一个导航“小部件”,我需要它根据URL扩展到正确的位置。鉴于URL可能有N行深,我需要一个方法来跟踪它通过的行 例如:行[1]。树。行[3]。树。行[0],这样我知道要展开第二个元素的导航,然后是第四个元素,然后突出显示该列表中的第一个元素 问题在于rowNum=rowNum+“x”+x我传递回函数。我想我可能是过度劳累了,当我认为这会起作用时,我没有想清楚 建议 谢谢! 关于这个函数,我还有另外一个问题,但这个问题是不同的。提交一个附加问题是否不好Javascript 在json中搜索多维对象时,如何跟踪对象父对象?,javascript,json,Javascript,Json,下面是我实现搜索的功能。我的问题是我需要跟踪我必须通过哪些行来查找URL。我正在构建一个导航“小部件”,我需要它根据URL扩展到正确的位置。鉴于URL可能有N行深,我需要一个方法来跟踪它通过的行 例如:行[1]。树。行[3]。树。行[0],这样我知道要展开第二个元素的导航,然后是第四个元素,然后突出显示该列表中的第一个元素 问题在于rowNum=rowNum+“x”+x我传递回函数。我想我可能是过度劳累了,当我认为这会起作用时,我没有想清楚 建议 谢谢! 关于这个函数,我还有另外一个问题,但这个
function lmIntra_LeftNavBuilder_findURL(url)
{
return lmIntra_LeftNavBuilder_searchJson(jsonLNav.tree[0],url,null);
}//end findURL
function lmIntra_LeftNavBuilder_searchJson(tree,url,rowNum)
{
if(rowNum == null)
{
rowNum="";
}
for(var x=0; x<=tree.rows.length-1;x++)
{
var cururl = "";
if(typeof tree.rows[x] ==="undefined")
{
cururl="";
}else
{
var cururl = tree.rows[x].url;
}
if(url == cururl )
{
//return tree.rows[x].title;
return rowNum + " treeDepth:"+tree.pos;
}//end if
else
{
if(typeof tree.rows[x]!= "undefined")
{
if(typeof tree.rows[x].tree.rows != "undefined")
{
rowNum = rowNum+"x"+x;
var t = lmIntra_LeftNavBuilder_searchJson( tree.rows[x].tree,url,rowNum);
if (t) return t;
}//end if
}//end if typeof tree.rows[x].tree!= "undefined"
}//end else
}//end for
}//end searchJson
大概这个树中存在的所有东西都映射到DOM中存在的东西,对吗?我认为最明智的选择是停止遍历该对象以找到所需内容,使用类似jQuery的库以及选择器引擎来选择所需节点,然后使用所述库遍历并备份DOM。即使在没有库的情况下遍历DOM对您来说也可能更容易。如果您真的想坚持现有的方法,我认为这并不遥远。如果我了解你想要什么,最大的问题是你需要做如下事情:
if(url == cururl )
{
rowNum = rowNum+"x"+x;
return rowNum + " treeDepth:"+tree.pos;
}
。每个对象都会映射到DOM中的某个对象,但它尚未创建。此函数是构建DOM的更大函数的一部分。不幸的是,我不能穿过那条路。我需要的是一种在JSON对象中获取父对象的方法。另外,由于在我加入公司之前做了一个设计选择,我不能使用Jquery。它不能很好地与其他一些代码配合使用,因此不在本项目中使用:(.现在,不管怎样,我稍后会尝试修复它,但这可能是一个大项目。它如何跟踪其备份过程中的每一行号?我承认我对递归的理解非常薄弱。我现在也在家,无法访问源代码来尝试此操作。它不在备份过程中…它会在备份过程中跟踪它们,然后再重试我对你给出的示例树做了一个小扩展,它将行号作为字符串的一部分返回。你可能还可以传递一个数组而不是字符串作为rowNum变量,并在传递过程中向其推送新值。
if(url == cururl )
{
rowNum = rowNum+"x"+x;
return rowNum + " treeDepth:"+tree.pos;
}