在 forEach 中使用条件语句时,如何检测是否每个子项都未通过条件
When using conditional statements inside of forEach, how to detect if every child failed the condition?
从Firebase DataSnapshot开始,我想要一些东西,用简单的英语来说,"如果所有的孩子都不符合条件,就执行一些东西"。
这是我现在拥有的:
appleappsRef.on('value', function (allApplesSnapshot){
allApplesSnapshot.forEach(function (appleSnapshot) {
if (condition) {
//execute code
}
});
});
根据文档,您的 forEach 回调可以返回 true 以取消枚举,而 forEach() 将返回 true 以表示枚举已取消。
这意味着您可以执行以下操作:
appleappsRef.on('value', function (allApplesSnapshot){
var foundOne = allApplesSnapshot.forEach(function (appleSnapshot) {
if (condition) {
return true; // found one, cancel enumeration
}
});
if (!foundOne) {
// all children failed the condition.
}
});
if (allApplesSnapshot.every(function (appleSnapshot) { return !condition; }))
// ...
如果数组的每个元素都满足您传递给它的函数(即,该函数在传递该元素时返回 true),则Array.every
返回 true
。因此,要测试每个元素是否都不符合条件,则只需否定函数中的条件即可。
请注意,某些浏览器不支持 Array.every
,但每个支持 Array.forEach
的浏览器也应该支持 Array.every
。
您可以使用
.forEach 使用布尔值来跟踪,如果您发现条件为真:
appleappsRef.on('value', function (allApplesSnapshot){
var foundOne = false;
allApplesSnapshot.forEach(function (appleSnapshot) {
if (condition) {
foundOne = true;
}
});
if (!foundOne) {
// all children failed the condition
}
});
好吧,你总是可以循环遍历它,并且在任何时候其中一个子通道以某种方式从方法中突破,否则触发在所有子通道失败时应该触发的方法。在这种情况下,您甚至可以使用布尔值。
例如:创建一个布尔值并将其称为 allChildrenFailed 并将其默认设置为 true。遍历 foreach 循环,如果有任何子循环,请将其更改为 false。然后,只有在 allChildrenFailed 为 true 时,才在循环后触发所需的方法。
相关文章:
- 如何检查链接是否有文本,并根据文本值评估条件-Jquery/JS
- 如果条件将长 JavaScript 拆分为多行是否安全
- 如何检查是否调整浏览器大小的条件
- 是否可以将鼠标悬停(evt)与if条件结合使用
- 是否可以用php条件解析jQuery.append中的Html
- IE11是否删除了javascript条件编译
- 是否可以有条件地添加角度自定义验证约束
- 是否可以将条件语句或其他javascript作为参数传递到ember句柄中
- 在条件(if)结构的条件语句中是否有定义变量的有效方法
- jQuery是否满足完全匹配类的条件
- Javascript-在检查对象属性是否存在时避免异步竞争条件
- 是否可以根据条件调用和执行外部 Javascript 文件
- 是否有任何条件仅在 javascript 中按下浏览器关闭 (x) 时检测
- JavaScript - 是否可以在不使用OR的情况下在一个条件下检查多个工作日
- 以角度 + 离子形式显示的条件:显示 Id 是否具有特定值
- 用于测试字符串是否具有数字字符的条件
- 是否有在 Zurb Foundation 4 中有条件地加载 JS 组件的最佳实践
- Jquery检查元素是否存在以及条件是否存在
- 继续检查条件是否成立
- Javascript如何检查一个条件是否已经满足,并不再应用它