У меня есть угловой цикл foreach, и я хочу выйти из цикла, если я сопоставлю значение. Следующий код не работает.
angular.forEach([0,1,2], function(count){
if(count == 1){
break;
}
});
Как я могу получить это?
angularjs
javascript-framework
Пухлый мальчик
источник
источник
Ответы:
Там нет никакого способа сделать это. См. Https://github.com/angular/angular.js/issues/263 . В зависимости от того, что вы делаете, вы можете использовать логическое значение, чтобы просто не входить в тело цикла. Что-то вроде:
источник
!keepGoing && return;
в начало функции меньше кода.angular.forEach
Цикл не может сломаться на матче состояния.Мой личный совет - использовать цикл NATIVE FOR вместо
angular.forEach
.Цикл NATIVE FOR работает примерно на 90% быстрее, чем цикл for other.
ИСПОЛЬЗОВАТЬ ДЛЯ ЦИКЛА В УГЛОВОЙ:
источник
пожалуйста, используйте некоторые или все экземпляры ForEach,
Пример для некоторых:
Пример для каждого:
Найти дополнительную информацию
http://www.jsnoob.com/2013/11/26/how-to-break-the-foreach/
источник
Используйте метод Array Some
существующие вернут true, и вы можете использовать это как переменную в своей функции
Array Some Method - Javascript
источник
angular.forEach()
заключается в том, что я должен поддерживать IE8, который не имеетArray.forEach()
... илиArray.some()
.Насколько я знаю, Angular не предоставляет такой функции. Вы можете использовать
find()
функцию подчеркивания для этого (это в основном forEach, который выходит из цикла, когда функция возвращает true).http://underscorejs.org/#find
источник
Если вы используете jQuery (следовательно, не jqLite) в сочетании с AngularJS, вы можете выполнять итерации с $ .each - что позволяет ломать и продолжать на основе выражения логического возвращаемого значения.
JSFiddle:
http://jsfiddle.net/JEcD2/1/
Javascript:
Примечание:
Хотя использование jQuery неплохо, MDN рекомендует использовать как нативные функции Array.some, так и Array.every , поскольку вы можете прочитать в нативной документации forEach :
Следующие примеры предоставлены MDN:
Array.some:
Array.every:
источник
Конкретно, вы можете выйти из
forEach
цикла и в любом месте выдать исключение.Однако лучше, если вы используете другую библиотеку или реализуете свою собственную функцию,
find
в данном случае функцию, поэтому ваш код является наиболее высокоуровневым.источник
Попробуйте это как перерыв;
источник
Как говорится в других ответах, Angular не предоставляет эту функциональность. Однако jQuery делает, и если вы загрузили jQuery так же, как Angular, вы можете использовать
Смотрите http://api.jquery.com/jquery.each/
источник
Обычно в javascript нет способа разорвать цикл «каждый». Обычно можно использовать метод «короткого замыкания».
источник
break
в angular forEach невозможно добиться успеха, для этого нужно изменить forEach.источник
break()
должно ли быть определено или не является ли это уже угловой частью. Пожалуйста, определите, если нет.Вы можете использовать это:
источник
источник
источник
Я бы предпочел сделать это по возвращении. Поместите часть цикла в приватную функцию и возвращайте ее, когда хотите разорвать цикл.
источник
Я понимаю, что это старый, но фильтр массива может делать то, что вам нужно:
Затем вы можете запустить
arr.forEach
и другие функции массива.Я понимаю, что если вы намерены полностью сократить циклические операции, это, вероятно, не будет делать то, что вы хотите. Для этого вам лучше всего использовать
while
.источник
Этот пример работает. Попытайся.
источник
for
петли, его сценарийforeach
использования,for
вероятно, не нуженИспользуйте Return, чтобы разорвать петлю.
источник
источник
Я бы использовал
return
вместоbreak
.Работает как шарм.
источник
Просто добавьте $ index и сделайте следующее:
источник