JavaScript执行函数数组&如果全部返回True,则返回True

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

本文关键字:True 返回 全部 如果 函数 执行 数组 amp JavaScript      更新时间:2023-09-26

真的找不到答案。我有一个函数,它应该允许用户通过"检查"(返回truefalse的函数)。检查将在大量项目上运行。对于每一项,我想知道是否所有的检查结果都是真的。

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

我该怎么做?显然,我可以用for循环迭代每个函数,但我怀疑可能有更好的方法。也许还有一句俏皮话。

谢谢你们的帮助。

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

使用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();
  });
}

您可以使用简单的标志。试试这样的东西:

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();
    }
}