1
我有以下方法 - 一種用於從JSON模式生成樹結構的遞歸方法。遞歸方法 - 在每次調用時增加一個值
我想保持樹的每個節點的級別和等級。 (等級=水平等級,等級=垂直等級(依次遞增))等級和等級的目的是稍後在svg中繪製相同的結構。
等級獲得正確,但級別不會在更新嵌套列表時更新。如何正確更新級別?
有沒有其他方法可以在svg上繪製這個結構而不使用等級和級別?
function traverseJSONSchema1(root, rootname, resultpane, lev, rank) {
if (root.type === "object") {
var listitem = resultpane.append("li");
if (rootname !== "") {
listitem.text(rootname + ":" + root.type + "-" + lev + "-" + rank);
rank++;
lev++;
}
var newlist = listitem.append("ul");
var items = root.properties; //select PROPERTIES
for (var i = 0; i < Object.keys(items).length; i++) { //traverse through each PROPERTY of the object
var itemname = Object.keys(items)[i];
var item = items[itemname];
traverseJSONSchema1(item, itemname, newlist, lev + i, rank);
}
} else if (root.type === "array") {
var items = root.items; //select ITEMS
var listitem = resultpane.append("li");
if (rootname !== "") {
listitem.text(rootname + ":" + root.type + "[" + items.type + "]" + "-" + lev + "-" + rank);
rank++;
lev++;
}
traverseJSONSchema1(items, "", listitem, lev + 1, rank); //recurse through the items of array
} else if (["string", "integer", "number", "boolean"].indexOf(root.type) > -1) { //when the type is a primitive
var listitem = resultpane.append("li");
if (rootname !== "") {
listitem.text(rootname + ":" + root.type + "-" + lev + "-" + rank);
rank++;
lev++;
}
}
}
你有問題,排名或水平? – Slavik
級別是問題 - 通過糾正錯誤來更新問題。 – SachiDangalla
如何在到達分支的最後一個節點時返回關卡?如果我理解正確,那麼您需要將最高級別傳遞迴前輩以使其正常工作 –