我在递归函数中面临关键问题。这是我的递归函数:
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。
答案 0 :(得分:0)
因为我不知道输入数据但是
jsonData = jsonData.children[i];
jsonData = returnedSelf.iterateJson(data, jsonData, returnedSelf);
这只是可以覆盖jsonData的行。