我在递归函数中面临关键问题。这是我的递归函数:
iterateJson(data, jsonData, returnedSelf) {
var obj = {
"name": data.groupName,
"size": 4350,
"type": data.groupType
};
if (data.parentGroupName == jsonData.name) {
jsonData.children.push(obj);
} else {
if (jsonData.children) {
for (var i = 0; i < jsonData.children.length; i++) {
if (data.parentGroupName == jsonData.children[i].name) {
jsonData.children[i].children.push(obj);
elementFound = true;
break;
}
}
if (elementFound) {
return jsonData;
} else {
if (jsonData.children) {
for (i = 0; i < jsonData.children.length; i++) {
if (elementFound) {
return jsonData;
} else {
jsonData = jsonData.children[i];
jsonData = returnedSelf.iterateJson(data, jsonData, returnedSelf);
}
}
}
}
}
}
return jsonData;
},
现在的问题是,在第二个 for 循环中,(jsonData.children.length)
我的 jsonData 正在更改。如何保留父级 jsonData 。
希望我的问题很清楚。 编辑使其更精确。 假设最初 jsondata 有 5 个元素,我进入循环将第一个子元素作为新的 jsonData 并再次调用此函数。因此,当条件满足时,它应该返回 for 循环,并且 jsonData 应该具有 5 个数据的初始元素。相反,它具有新的 json 数据,它是原始 jsonData 的第一个子元素。
我的问题是如何保留具有 5 个元素的父级 jsonData。
最佳答案
因为我不知道输入数据,但是
jsonData = jsonData.children[i];
jsonData = returnedSelf.iterateJson(data, jsonData, returnedSelf);
这只是可以覆盖 jsonData 的行。
关于javascript - 递归函数中的for循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40216050/