[英]Getting JSON parent for node
谢谢大家的反馈,因为这是我的第一个问题。 我会再尝试。
我有这样的JSON对象:
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,我应该得到title1> title 2; 给定ID 555,我应该获得title1> title4。请注意,这些不是父母,而是父母的兄弟姐妹,因为每个数据对象都与“子代”对象数组配对。
我尝试了以下方法:
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":{"title":"title2","attr":{"id":222}},"children":[{"data":{"title":"title3","attr":{"id":333}},"children":[{"data":{"title":"title4","attr":{"id":444}},"children":[{"data":{"title":"title5","attr":{"id":555}},"children":[]}]}]}]}]}]} var current = obj.data[0], titles = []; while(current.data && current.data.attr.id != 444){ titles.push(current.data.title); current = current.children[0] || {} } document.write(titles.join(" > "));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.