javascript - 递归函数中的for循环

标签 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。

最佳答案

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

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

这只是可以覆盖 jsonData 的行。

关于javascript - 递归函数中的for循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40216050/

相关文章:

c++ - 递归方法 C++

javascript 获取数组元素的键

javascript - 网络音频 Api 输出

javascript - 子级和父级之间共享 v-model 值

java - Android JSON 限制行数

c# - 正则表达式递归替换

javascript - Google 自定义搜索热门查询出现错误

java - 如何使用java在android studio中解析这个JSON字符串

javascript - javascript Codeigniter 中的 Json 对象

c - 可视化 C 中的递归