JavaScript 执行函数数组 & Return True If All Return True

JavaScript Execute Array of Functions & Return True If All Return True

找不到真正的答案。 我有一个函数应该允许用户传递它 "checks"(returns truefalse 的函数)。支票将 运行 用于大量项目。对于每个项目,我想知道所有检查是否都返回 true。

function foo(checksArray) { //checksArray: [func1, func2, func3]
  var itemList = [1, 2, 3, 4];
  for (item of itemList)
    if (checkAllFunctions(item))
      doSomething();
}

我该怎么做?显然我可以用 for 循环遍历每个函数,但我怀疑可能有更好的方法。也许甚至还有一条线。

感谢大家的帮助。

编辑:我想保留 运行ning 没有任何意义,即使其中一个检查返回 false。如果能停在那里就更好了!

您可以为此使用简单的标志。尝试这样的事情:

function foo(checksArray) { //checksArray: [func1, func2, func3]
    var itemList = [1, 2, 3, 4];

    var flag = true;

    for (item of itemList)
        flag = checkElement(item); // check single element, not all

        if(flag){
            // here you can check your state after every single item
        }
    }

    if(flag){
        doSomething();
    }
}

不一定更短,但更清晰正确:

function foo (checksArray) {
    var itemList = [1, 2, 3, 4];
    var meetsAllCriteria = itemList.every(function (item) {
        return checkAllFunctions(item);
    });
    if (meetsAllCriteria) {
        doSomething();
    }
}

forEach占用itemList的每个元素。在该循环内,使用 every 检查 checksArray 中的每个函数是否通过。

function foo(checksArray) { //checksArray: [func1, func2, func3]
  var itemList = [1, 2, 3, 4];

  itemList.forEach(function(item) {
    if (checksArray.every(function(check) { return check(item); })) doSomething();
  });
}