我试图了解如何递归地将分支结构附加到对象。
我正在尝试将子项附加到一个空的 JSON 对象,该对象构建后应如下所示。
nodeStructure: {
text: { name: "Parent node" },
children: [
{
text: { name: "First child" },
children: [
{
text: {name: "Grandchild"}
}
]
},
{
text: { name: "Second child" }
}
]
}
这是该代码最简洁的版本。
trackFraud = async (fraudID) => {
var root = chart_config.nodeStructure = newNode(fraudID);
await fraudClimb(root, 1);
var my_chart = new Treant(chart_config);
function newNode(node) { return {text:{name:"fraud " + node}}; }
async function fraudClimb(root, fraudID) {
var frauds = await findFraudByFromID.call(this, fraudID); // returns an array of "integers"
if (frauds.length == 0) return;
var children = root.children = [];
for (var i = 0; i < frauds.length; i++) {
children.push(newNode(frauds[i]));
fraudClimb(children[i], frauds[i]);
}
}
}
现在我正在尝试思考如何遍历(或者在本例中附加到)一个在数组和对象之间交替每隔一个级别的结构
我想真正的问题是如何递归地传递一个对象并将其附加到该原始对象。
最佳答案
我在您的代码中发现两个问题:
第一次调用
fraudClimb
会忽略可用的fraudID
参数。而不是:await fraudClimb(root, 1);
我认为你需要:
await fraudClimb(root, fraudID);
不会等待对
fraudClimb
的递归调用,但您需要在继续之前完成异步操作。所以改变这个:fraudClimb(children[i], frauds[i]);
至:
await fraudClimb(children[i], frauds[i]);
关于javascript - 爬升并附加嵌套对象/数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54950587/