JavaScript执行函数数组&如果全部返回True,则返回True
JavaScript Execute Array of Functions & Return True If All Return True
真的找不到答案。我有一个函数,它应该允许用户通过"检查"(返回true
或false
的函数)。检查将在大量项目上运行。对于每一项,我想知道是否所有的检查结果都是真的。
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();
}
}
相关文章:
- 对于loop.if-仅在经过所有间隔后返回true
- 如果函数返回True,则显示Javascript按钮
- Javascript If else 只返回 TRUE 或只返回 FALSE
- 过滤器返回true或false
- 我对“;返回true"嵌套函数内部;t工作
- 如何在成功输入时使“返回TRUE”
- 检查一个元素是否有一个类与另一个类总是返回true
- 通过AJAX从具有LazyLoadingEnabled=true的EF返回的数组不正确
- JavaScript函数未返回true
- 如果URL中有任何字符串变体匹配,则返回true
- 使用!而in运算符在应该为true时返回false,为什么
- 如何使以下函数返回true或false
- 为什么 javascript 返回对象位置 true 或 false
- 使用“in”关键字检查 0 始终返回 true
- hasOwnProperty 在对照父对象属性进行检查时返回 true
- 为什么 1.2 == true 返回 false 如果布尔值 (1.2) 实际上是真的
- Backbone.js集合.Create函数没有使用wait: true返回更新后的模型
- Sequelize:调用.get({plain: true}))返回.get不是函数
- 在if语句中为true, true返回false
- 固定脚和外高度(true)返回值