javascript - 返回条件

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

最佳答案

您需要检查 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));

关于javascript - 返回条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52464520/

相关文章:

javascript - 数据表选择 - 禁用几行以供选择

javascript - React 在 setState 之后不更新组件

javascript - 是否可以将触发悬停用作移动设备的切换?

javascript - React 递归遍历嵌套对象

MySql递归逻辑

Javascript:禁用文本字段不起作用

javascript - 使用 firebase .on() 刷新页面后,仅从 firebase 获取最后的数据

pointers - 递归地附加到 slice

java - 递归 boolean 方法检查整数是否可整除

当表具有指向自身的链接时的 SQL 查询