通过 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" 。