Если вы спрашиваете, можно ли прервать цикл forEach
, ответ - нет.
Вы можете установить флаг в функции, которую вы передаете, чтобы отключить основную часть кода, но это все. Цикл продолжится до конца.
Если вы хотите разорвать цикл, используйте вместо него традиционный цикл for
или напишите пользовательский метод forEach
, который можно прерывать на основе возвращаемого значения аргумента вашей функции.
EDIT:
Вот while
, который ломается, когда вы возвращаете false
.
Array.prototype.while = function(my_callback) {
var len = this.length;
if (typeof my_callback != "function") throw new TypeError();
var thisp = arguments[1];
for (var i = 0; i < len; i++) {
if (i in this) {
var ret = my_callback.call(thisp, this[i], i, this);
if (ret === false) {
break;
}
}
}
};
ваш код:
function str_search(element, index, array){
if (element.Contains(obj.id) ) {
stored_id = obj.id;
return false;
}
}
listdatatypes.while( str_search );