【问题标题】:Have a recursive function call on each key in a for loop parsing json对for循环解析json中的每个键进行递归函数调用
【发布时间】:2017-07-20 14:59:17
【问题描述】:

假设我有一个看起来像这样的 json 对象

"bounds":{
    "coordinatetop":{
       "x":143,
       "y":544
    },
    "coordinatebottom":{
       "x":140,
       "y":510
    }
}

我正在尝试使用此代码解析当前的 JSON,其中 data 是 json 数据,而 target 只是一个标签 ID。

$.each(data, function(index, value) {
    if (typeof(value) == 'object') {
      processBounds(value, target);
    } else {
      console.log(value);
    }
});

当我循环执行此操作时,函数调用获取坐标顶部和目标的值,然后是 x 和 y 的值,它们是 143 和 544。但是,此函数循环的距离不够远,无法获取坐标底部的值。

还有哪些其他实现方式可以实现这一目标?谢谢

【问题讨论】:

标签: javascript json parsing


【解决方案1】:

实际上你并没有递归调用函数,你只是绑定了一个回调函数来调用processBounds()函数。

需要单独声明processBounds函数,然后在.each回调中绑定:

var processBounds = function(index, value) {
  if (typeof(value) == 'object') {
    processBounds(value, target);
  } else {
    console.log(value);
  }
}

$.each(data, processBounds);

编辑:

$.each(data.bounds, processBounds);

【讨论】:

  • 对不起,我忘了说明 $.each 位于 processBounds(data, target) 函数中
  • @Simon2233 所以在这种情况下你需要用data.bounds来调用它。
  • 是的,我已经做到了。我打印坐标顶部的内容没有问题,但我无法访问我假设的坐标底部的内容,因为递归函数调用停止了循环
猜你喜欢
  • 2011-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-14
  • 2015-05-21
  • 1970-01-01
相关资源
最近更新 更多