Как остановить цикл _.each в lodash.js?
У меня есть следующий код для обработки строк:
_.each($scope.inspectionReviews, function (value, key) {
alert("status=" + value.IsNormal + " " + "name=" + value.InspectionItemName);
if (!value.IsNormal) {
$scope.status = false;
return;
}
$scope.status = true;
});
В какой-то момент я хочу остановить цикл, но, похоже, что оператор return
не работает как ожидается.
Как я могу остановить выполнение цикла?
2 ответ(ов)
Для того чтобы прервать цикл each
в библиотеке lodash, вы можете использовать return false;
внутри коллбэка. Это нормально сработает, поскольку lodash позволяет использовать этот подход для выхода из цикла.
_.each(array, function(value) {
if (someCondition(value)) {
return false; // Это прервет цикл
}
// Другие действия
});
Но важно отметить, что если вы используете underscore, то поведение будет другим. В underscore each
фактически является оберткой вокруг forEach
, и в JavaScript стандартный метод forEach
не поддерживает выход из цикла с использованием return false;
. В таком случае единственным вариантом будет использование обычного цикла for
, который позволяет прерывать итерацию с помощью break
.
Таким образом, если вам нужно прерывать итерацию, и вы не уверены, какую библиотеку использовать, лучше использовать lodash для этой цели. Если вы хотите использовать underscore, вам придется применить другой подход, например, обычный цикл.
При использовании return false
в функции, это действительно эквивалентно использованию break;
. В обоих случаях происходит выход из текущего контекста выполнения, что приводит к немедленному завершению работы функции.
С другой стороны, оператор return
без значения (только return;
) выполняет то же действие, что и continue;
, если рассматривается в контексте цикла. Однако в случае с функцией return;
завершает выполнение функции и возвращает управление в вызывающий код, в то время как continue;
просто пропускает текущую итерацию цикла и переходит к следующей.
Таким образом, несмотря на определенные сходства, эти операторы имеют разные контексты применения и поведение.
Где найти документацию по форматированию даты в JavaScript?
Как определить нажатие клавиши Esc?
Как проверить, содержит ли массив строку в TypeScript?
Ссылка и выполнение внешнего JavaScript-файла, размещенного на GitHub
Как остановить Babel от трансформации 'this' в 'undefined' и добавления "use strict"