Javascript 获取节点的JSON父级
谢谢大家的反馈,因为这是我的第一个问题。我再试一次 我有一个JSON对象:Javascript 获取节点的JSON父级,javascript,json,parent-child,siblings,tree-traversal,Javascript,Json,Parent Child,Siblings,Tree Traversal,谢谢大家的反馈,因为这是我的第一个问题。我再试一次 我有一个JSON对象: var obj = { "data":[ { "data":{ "title":"title1", "attr":{ "id":111 } }, "c
var obj = {
"data":[
{
"data":{
"title":"title1",
"attr":{
"id":111
}
},
"children":[
{
"data":{
"title":"title2",
"attr":{
"id":222
}
},
"children":[
{
"data":{
"title":"title3",
"attr":{
"id":333
}
}
}
]
},
{
"data":{
"title":"title4",
"attr":{
"id":444
}
},
"children":[
{
"data":{
"title":"title5",
"attr":{
"id":555
}
}
}
]
}
]
}
]
};
给定一个id值,我想通过title属性跟踪一个“沿袭”到它,如下所示:给定222,我应该得到title 1;给定id 333,我应该得到标题1>标题2;给定ID555,我应该得到标题1>标题4。请注意,这些不是父对象,而是父对象的兄弟对象,因为每个数据对象都与一组“子”对象配对
我尝试了以下方法:
var x = 555;
var path = "";
function search(path, obj, target) {
for (var k in obj) {
if (obj[k] === target) {
return path + "['" + k + "']"
}
else if (typeof obj[k] === "object") {
var result = search(path + "['" + [k] + "']", obj[k], target);
if (result)
return result;
}
}
return false;
}
var path = search(path, obj, x);
console.log(path); // "['data']['0']['children']['1']['children']['0']['data']['attr']['id']"
但我无法获得标题属性返回。非常感谢您的帮助,并感谢大家的耐心。通过使用循环查找指定的项目,您可以尝试:
var obj={“data”:[{“data”:{“title”:“title1”,“attr”:{“id”:111}},“children”:[{“data”:{“title2”,“attr”:{“id”:222},“children”:[{“data”:{“title”:“title3”,“attr”:{“id”:333},“children”:[{“data”:{“title”:“title4”,“attr”:{“id”:444},“children”:{“children data”:{“data”:“title”:“title”:“title3”,“attr”:“title5”,“attr”:}”,children
var current=对象数据[0],标题=[];
while(current.data&¤t.data.attr.id!=444){
titles.push(当前.数据.标题);
current=current.children[0]|{}
}
文件。编写(标题。连接(“>”)代码>你做出了什么努力?与前面的评论相呼应:谢谢,但是如果我的树有兄弟姐妹,就像我上面的新例子一样,这个答案将失败。我试过解决这个问题,但没能想出解决办法,请看我试过了什么。再次感谢!