返回Array.forEach中函数的值而不是内部函数的值

这个问题在这里已经有了答案:

  • 如何使Array.forEach短路像调用break? 24个答案

  • 使用Array#every检查元素

    function isValid(source, target) {
        return arr.every(function (el) {
            return el.value !== 3;
        });
    }
    

    Array#some一样

    function isValid(source, target) {
        return !arr.some(function (el) {
            return el.value === 3;
        });
    }
    

    你不能。

    请参阅MDN的文档:

    没有办法停止或破坏forEach()循环,而不是抛出异常。 如果你需要这样的行为,forEach()方法是错误的工具,请使用纯循环代替。 如果您正在为谓词测试数组元素并需要布尔返回值,则可以使用every()或some()来代替。 如果可用,则新方法find()或findIndex()也可用于提前终止真谓词。


    会很好地使用正常for in ,但与forEach你可以这样做:

    function isValid(source, target) {
      var r = true;
      arr.forEach(function (el) {
        if (el.value === 3) {
          r = false;
          return false; // terminate loop
        }
      });
    
      return r;
    }
    
    链接地址: http://www.djcxy.com/p/70063.html

    上一篇: Return value for function instead of inner function in Array.forEach

    下一篇: How can I break out of forEach or re structure my function?