恢复条件

时间:2018-09-23 08:51:13

标签: javascript recursion

退货在某种情况下不起作用。虽然console.log可以正常工作。问题在于该函数总是返回false。

function func(obj, input) {
  if (input === obj) {
    console.log('Here it works');
    return true; //expected return tr
  };

  for (let key in obj) {
    func(obj[key], input);
  }

  return false;

}

2 个答案:

答案 0 :(得分:1)

您需要在for循环内检查调用的返回值,然后返回true退出。

function contains(obj, input) {
    if (input === obj) {
        return true;
    }

    if (!obj || typeof obj !== 'object') { // check for objects
        return false;                      // and exit if not with false
    }

    for (let key in obj) {
        if (contains(obj[key], input)) {  // check for true
            return true;                  // return only if true
        }
    }
    return false;
}

console.log(contains('a', 'a'));
console.log(contains('a', 'b'));
console.log(contains({ foo: { bar: { baz: 42 } } }, '42'));
console.log(contains({ foo: { bar: { baz: 42 } } }, 42));

答案 1 :(得分:0)

我认为它工作正常

    function func(obj, input) {
  if (input === obj) {
    console.log('Here it works');
    return true; //expected return tr
  };

  for (let key in obj) {
    contains(obj[key], input);
  }

  return false;}

var a ={}

console.log(func(a,a));
Here it works
 true