【问题标题】:How to return a value within a subfunction?如何在子函数中返回值?
【发布时间】:2016-04-05 07:38:31
【问题描述】:

我想在找到元素后立即返回第一个函数。

这只是一个例子:

function foo(arr) {
    arr.forEach(function (e) {
      if (e == 4)
        return true // this obviously does not return the foo function
    });
    return false
}

【问题讨论】:

    标签: javascript function closures


    【解决方案1】:

    仅仅因为我们有像forEach 这样的花哨的函数,并不意味着你仍然不能在需要它们时使用普通的for 循环:

    function foo(arr) {
        for (var x = 0; x < arr.length; x++) {
            if (arr[x] == 4)
                return true;
        }
        return false;
    }
    

    【讨论】:

    • return arr[x] == 4; 也很高兴看到。
    • @Jai 一旦看到不匹配的元素就会返回 false,而不是全部检查?
    【解决方案2】:

    使用Array#some()

    some() 方法测试数组中的某个元素是否通过了提供的函数实现的测试。

    some() 对数组中存在的每个元素执行一次callback 函数,直到找到callback 返回真值的元素。如果找到这样的元素,some() 立即返回true。否则,some() 返回falsecallback 仅对具有赋值的数组索引调用;它不会为已删除或从未被赋值的索引调用。

    function foo(arr) {
        return arr.some(function (e) {
            return e == 4;
        });
    }
    
    document.write(foo([1, 2, 3, 4]) + '<br>');
    document.write(foo([1, 2, 3, 42]) + '<br>');

    【讨论】:

      【解决方案3】:

      如果您不想简单地使用老式的for,也可以在foo 函数的范围内设置一个变量。

      function foo(arr) {
          var result = false;
          arr.forEach(function (e) {
            if (e == 4)
              result = true;
          });
          return result
      }
      

      【讨论】:

      • OP 确实说“一旦我找到元素” - 这将遍历它们。
      • 呃,我在手机上,没看到 :)
      猜你喜欢
      • 1970-01-01
      • 2020-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-05
      • 1970-01-01
      相关资源
      最近更新 更多