退出递归函数

时间:2014-06-26 12:17:25

标签: javascript recursion enumeration

我遍历一个复杂的JSON对象,但我希望在n次迭代后停止循环

n = 0;
maxIterations = 100;
ObjectValues = function(v, k){
  if(n == maxIterations){
    if (typeof v == "object") {
      for (var kp in v) {
        if (Object.hasOwnProperty.call(v, kp)) {
          ObjectValues(v[kp], k != undefined ? k + "." + kp : kp);
        }
      }
    } else {
      console.log(k + ":" + v);
      n++;
    }
  }else{
    console.log('I should end the function');
    return false;
  }
};

但我无法使用return false退出该函数。即使我尝试使用return false退出函数,函数也会被调用。

1 个答案:

答案 0 :(得分:0)

据我了解,您希望以递归方式打印maxiteration键及其值:

n = 0;
maxIterations = 100;
ObjectValues = function(v, k){
  if(n < maxIterations){
    if (typeof v == "object") {
      for (var kp in v) {
        if (Object.hasOwnProperty.call(v, kp)) {
          if(! ObjectValues(v[kp], k != undefined ? k + "." + kp : kp) )
            return false;
        }
      }
    } else {
      console.log(k + ":" + v);
      n++;
    }
    return true;
  } else {
    console.log('I should end the function');
    return false;
  }
};