通过 if 条件时退出 foreach
Exit of foreach when pass by a if conditional
我的代码有逻辑问题。
object.forEach(function(item) {
if (item.a === $scope.a) {
//doSomething
}
else {
//doOtherStuff
}
});
所以,基本上,我想 运行 对象并比较 $scope 是否存在于对象内部。如果 $scope 存在,则执行某些操作并在 forEach 上退出,否则,执行其他操作并退出。最好的方法是什么?
我的逻辑问题是它 运行 在 forEach 和每个索引中正在做某事。也许我必须使用另一种我还不知道的方法,你能帮我吗?
或许您可以使用 array.prototype.filter() 来简化您的代码。
您可以看到更多信息here。
您与 ie9 兼容,但我认为应该有一个 jquery 功能可以做到这一点。
改用every
:
Object.keys(object).every(function(item) {
if (some_exit_condition) {
return false; // don't call this callback again for next items
else {
// don't stop, keep going
return true;
}
});
如果 object
是一个类似数组的对象(可迭代),则不需要对其调用 Object.keys()
。这取决于你想要迭代什么。使用 Object.keys()
,您可以迭代该对象的所有属性,并在回调函数中编写 object[item]
来获取该 属性.
的值
方法 some
具有类似的行为,但是您必须 return true
停止迭代,并且 false
继续。
every()
和some()
都有一个布尔值return,这也区别于forEach()
。使用该 return 值,您可以知道是否存在明确的 "exit" 。
我的代码有逻辑问题。
object.forEach(function(item) {
if (item.a === $scope.a) {
//doSomething
}
else {
//doOtherStuff
}
});
所以,基本上,我想 运行 对象并比较 $scope 是否存在于对象内部。如果 $scope 存在,则执行某些操作并在 forEach 上退出,否则,执行其他操作并退出。最好的方法是什么?
我的逻辑问题是它 运行 在 forEach 和每个索引中正在做某事。也许我必须使用另一种我还不知道的方法,你能帮我吗?
或许您可以使用 array.prototype.filter() 来简化您的代码。
您可以看到更多信息here。
您与 ie9 兼容,但我认为应该有一个 jquery 功能可以做到这一点。
改用every
:
Object.keys(object).every(function(item) {
if (some_exit_condition) {
return false; // don't call this callback again for next items
else {
// don't stop, keep going
return true;
}
});
如果 object
是一个类似数组的对象(可迭代),则不需要对其调用 Object.keys()
。这取决于你想要迭代什么。使用 Object.keys()
,您可以迭代该对象的所有属性,并在回调函数中编写 object[item]
来获取该 属性.
方法 some
具有类似的行为,但是您必须 return true
停止迭代,并且 false
继续。
every()
和some()
都有一个布尔值return,这也区别于forEach()
。使用该 return 值,您可以知道是否存在明确的 "exit" 。