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

时间:2015-11-16 11:15:11

标签: javascript arrays function iteration

无法真正找到答案。 我有一个函数,应该允许用户传递“检查”(返回truefalse的函数)。检查将在大量项目上运行。对于每个项目我想知道是否所有检查都返回true。

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

我该怎么办?显然我可以使用for循环迭代每个函数,但我怀疑可能有更好的方法。也许甚至有一个单行。

感谢任何帮助。

编辑:我猜即使其中一项检查返回false,仍然没有任何意义保持运行。如果它可以在那里停下来,那就更好了!

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

不一定更短,但更清洁和正确:

lstThai1971.Items.AddRange(strArr)