JavaScript 执行函数数组 & Return True If All Return True
JavaScript Execute Array of Functions & Return True If All Return True
找不到真正的答案。
我有一个函数应该允许用户传递它 "checks"(returns 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
循环遍历每个函数,但我怀疑可能有更好的方法。也许甚至还有一条线。
感谢大家的帮助。
编辑:我想保留 运行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();
});
}
找不到真正的答案。
我有一个函数应该允许用户传递它 "checks"(returns 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
循环遍历每个函数,但我怀疑可能有更好的方法。也许甚至还有一条线。
感谢大家的帮助。
编辑:我想保留 运行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();
});
}