for递归函数中的循环

时间:2016-10-24 10:23:43

标签: javascript json recursion

我在递归函数中面临关键问题。这是我的递归函数:

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。

1 个答案:

答案 0 :(得分:0)

因为我不知道输入数据但是

jsonData = jsonData.children[i];
jsonData = returnedSelf.iterateJson(data, jsonData,      returnedSelf);

这只是可以覆盖jsonData的行。