javascript - 在递归 JavaScript 函数上使用或初始化局部变量的值

标签 javascript jquery json search

我想编写一个递归函数来解析嵌套的 JSON。

这是我的 JSON 的样子:

var data = {
  a: {
    x: ["a", "b", "c", "d"],
  },
  b: {
    y: ["ab"],
    z: ["abc"],
  },
  c: ["a1", "b1"]
};

这是我写的:

var recurse = function(key, val) {
  window.mappedKey = window.mappedKey || '';
  if ($.type(val) === 'array') {
    if ($.inArray(search, val) >= 0) {
      window.mappedKey += key;
      alert(window.mappedKey);
    } else {
      window.mappedKey = '';
    }

  } else {
    window.mappedKey += key + '.';
    $.each(val, recurse);
  }
};

var search = 'ab';
$.each(data, recurse);

这里我使用全局window.mappedKey来存储递归上的前一个键。它工作得很好,但是有什么方法可以通过在递归函数中使用局部变量来防止这种情况。

最佳答案

我不太清楚 mappedKey 的用途,所以请耐心等待。

通常,当您想要将信息从一个函数实例传递到它调用的递归实例时,可以通过将信息作为参数传递到函数中来实现。然后,该函数创建该副本的本地副本,根据需要对该副本进行修改,然后使用该副本调用自身。 (通过这种方式,它可以避免更改传递给它的原始值/列表。)当函数实例消失时,它的所有局部变量及其副本也会消失。

关于javascript - 在递归 JavaScript 函数上使用或初始化局部变量的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31150860/

相关文章:

javascript - 使用 google geolocation api 查找塔的位置

php - 解析 JSON 时定位同一标签的特定实例

javascript - 运费计算器不工作

javascript - 使用 Javascript 解析格式错误的 JSON

javascript用输入值更新一个setInterval

jquery - 使用 jQuery 添加商品和从购物车中删除商品。我无法删除仅使用 jQuery 添加的项目。 script.js 文件中的方法 1

javascript - 尝试使用 Jquery 将 html 元素值获取到变量

javascript - 通过动态键访问对象未定义错误

javascript - 如何悬停并暂停 AngularJs Interval 中的时间?

javascript - 了解 Javascript 中的隐式转换