0
我需要從JSON中表示的數據構建樹形結構作爲對象和父級關係。我已經在下面的代碼中實現了成功完成這項工作的代碼,但我不確定它是否提供了最佳性能(我的意思是儘可能少地進行迭代)。提高使用JSON數據生成樹的遞歸性能
請注意,樹的根表示爲parent
與object
相同。例如{"object":"A", "parent":"A"}
關於任何其他具有更好性能的實現的建議將有所幫助!
var jsonInput =
[
{"object":"A", "parent":"A"},
{"object":"B", "parent":"A"},
{"object":"C", "parent":"A"},
{"object":"D", "parent":"B"},
{"object":"E", "parent":"B"},
{"object":"F", "parent":"D"},
{"object":"G", "parent":"D"},
{"object":"H", "parent":"E"},
{"object":"I", "parent":"E"},
{"object":"J", "parent":"C"},
{"object":"K", "parent":"C"},
{"object":"L", "parent":"J"},
{"object":"M", "parent":"J"},
{"object":"N", "parent":"K"},
{"object":"O", "parent":"K"},
{"object":"P", "parent":"N"},
{"object":"Q", "parent":"N"},
{"object":"R", "parent":"O"},
{"object":"S", "parent":"O"}
];
var root = getRoot();
root.childs = findChildrens(root);
console.log("The tree hierarchy is:")
console.log(root);
function getRoot() {
var root;
for (var counter = 0; counter < jsonInput.length; counter++){
\t var item = jsonInput[counter];
\t if(item.object === item.parent) {
\t \t root = item;
\t \t break;
\t }
}
var returnValue = JSON.parse(JSON.stringify(root));
root.visited = true;
return returnValue;
}
function findChildrens(parentObject) {
var childs = [];
for (var counter = 0; counter < jsonInput.length; counter++){
\t var item = jsonInput[counter];
\t if(item.parent === parentObject.object && !item.visited) {
\t \t var child = JSON.parse(JSON.stringify(item));
\t \t item.visited = true;
\t \t child.childs = findChildrens(child);
\t \t childs.push(child);
\t }
}
return childs;
}
'{ 「對象」: 「A」, 「父」: 「A」}'這是怎麼反對自己的父母?那麼,從技術上講,你可以做到這一點,但它是正確的嗎? – Thomas
是的,在我的情況下,對象的根將被表示爲'A'是'A'的父親 –