Javascript 在Array.forEach中为函数而不是内部函数返回值

Javascript 在Array.forEach中为函数而不是内部函数返回值,javascript,arrays,foreach,return,Javascript,Arrays,Foreach,Return,我使用此代码检查某些内容是否有效 function isValid(source, target) { arr.forEach(function (el) { if (el.value === 3) { return false; } }); return true; } 问题是代码的返回false行只会终止forEach中的内部函数,而不是整个isValid函数 如何终止外部函数?您不能 见: 除了抛出异常之外,没有其他方法可以停止或中断forEac

我使用此代码检查某些内容是否有效

function isValid(source, target) {
  arr.forEach(function (el) {
    if (el.value === 3) {
      return false;
    }
  });

  return true;
}
问题是代码的
返回false
行只会终止
forEach
中的内部函数,而不是整个
isValid
函数

如何终止外部函数?

您不能

见:

除了抛出异常之外,没有其他方法可以停止或中断forEach()循环。如果需要这样的行为,forEach()方法是错误的工具,请使用普通循环。如果您正在测试数组元素的谓词,并且需要一个布尔返回值,那么可以使用each()或some()。如果可用,新方法find()或findIndex()也可以用于在true谓词上提前终止


在中使用常规的
会很好,但是使用
forEach
可以:

function isValid(source, target) {
  var r = true;
  arr.forEach(function (el) {
    if (el.value === 3) {
      r = false;
      return false; // terminate loop
    }
  });

  return r;
}
用于检查元素

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


使用“普通”for循环不是更容易吗?使用or。
function isValid(source, target) {
    return !arr.some(function (el) {
        return el.value === 3;
    });
}