我的嵌套json看起来像:
var obj ={ "Name": "Main", "Id": "1", "Parent": "0", "children": [{ "Name": "Main1", "Id": "2", "Parent": "1", "children": [ ...
obj是树状结构,如下所示:
如何解析obj以获取指定id的任何父级的id?
jquery函数,例如function getIdParentsOf('25') { }
输出示例:25到1的父母是{20, 18, 10, 1 }
。
答案 0 :(得分:2)
声明只是具有特定属性的对象,包括相同类型的子节点数组。基本上是一个树形结构
您已更新了问题,现在树已分层。这意味着你需要递归地走树。 JSFiddle:http://jsfiddle.net/TrueBlueAussie/gdwjmqwh/6/
// If the required node is found, return true
// matching nodes added to the result parameter
var findParent = function (parentnode, id, result) {
if (parentnode.Id == id){
result.push(parentnode.Parent);
return true;
}
if (parentnode.children) {
for (var i = 0; i < parentnode.children.length; i++) {
var node = parentnode.children[i];
if (parentnode.Parent && findParent(node, id, result)) {
result.push(parentnode.Parent);
return true;
}
}
}
// no matches found - return false
return false;
}
像这样打电话
var result = [];
findParent(obj, "2", result)
console.log(result);
// Displays an array of parent ids