无法真正找到答案。
我有一个函数,应该允许用户传递“检查”(返回true
或false
的函数)。检查将在大量项目上运行。对于每个项目我想知道是否所有检查都返回true。
function foo(checksArray) { //checksArray: [func1, func2, func3]
var itemList = [1, 2, 3, 4];
for (item of itemList)
if (checkAllFunctions(item))
doSomething();
}
我该怎么办?显然我可以使用for
循环迭代每个函数,但我怀疑可能有更好的方法。也许甚至有一个单行。
感谢任何帮助。
编辑:我猜即使其中一项检查返回false,仍然没有任何意义保持运行。如果它可以在那里停下来,那就更好了!
答案 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)