각도 foreach 루프가 있고 값과 일치하면 루프에서 벗어나고 싶습니다. 다음 코드는 작동하지 않습니다.
angular.forEach([0,1,2], function(count){
if(count == 1){
break;
}
});
이걸 어떻게 얻을 수 있습니까?
각도 foreach 루프가 있고 값과 일치하면 루프에서 벗어나고 싶습니다. 다음 코드는 작동하지 않습니다.
angular.forEach([0,1,2], function(count){
if(count == 1){
break;
}
});
이걸 어떻게 얻을 수 있습니까?
답변:
이를 수행 할 방법이 없습니다. https://github.com/angular/angular.js/issues/263을 참조 하십시오 . 수행중인 작업에 따라 부울을 사용하여 루프 본문으로 들어 가지 않을 수 있습니다. 다음과 같은 것 :
var keepGoing = true;
angular.forEach([0,1,2], function(count){
if(keepGoing) {
if(count == 1){
keepGoing = false;
}
}
});
!keepGoing && return;
코드 상단에 함수 상단에 a 를 추가하고 싶습니다 .
그만큼 angular.forEach
루프는 조건 일치에 분리 할 수 없습니다.
내 개인적인 조언은 대신 NATIVE FOR 루프 를 사용하는 것입니다 angular.forEach
.
NATIVE FOR 루프는 다른 for 루프보다 약 90 % 빠릅니다.
ANGULAR에서 FOR 루프 사용 :
var numbers = [0, 1, 2, 3, 4, 5];
for (var i = 0, len = numbers.length; i < len; i++) {
if (numbers[i] === 1) {
console.log('Loop is going to break.');
break;
}
console.log('Loop will continue.');
}
ForEach의 일부 또는 모든 인스턴스를 사용하십시오.
Array.prototype.some:
some is much the same as forEach but it break when the callback returns true
Array.prototype.every:
every is almost identical to some except it's expecting false to break the loop.
일부 예 :
var ary = ["JavaScript", "Java", "CoffeeScript", "TypeScript"];
ary.some(function (value, index, _ary) {
console.log(index + ": " + value);
return value === "JavaScript";
});
모든 예 :
var ary = ["JavaScript", "Java", "CoffeeScript", "TypeScript"];
ary.every(function(value, index, _ary) {
console.log(index + ": " + value);
return value.indexOf("Script") > -1;
});
자세한 정보는 http://www.jsnoob.com/2013/11/26/how-to-break-the-foreach/를 찾으십시오
.
Array Some 메서드 사용
var exists = [0,1,2].some(function(count){
return count == 1
});
존재하면 true를 반환하고 함수에서 변수로 사용할 수 있습니다.
if(exists){
console.log('this is true!')
}
angular.forEach()
는 Array.forEach()
... 또는가없는 IE8을 지원해야하기 때문 Array.some()
입니다.
AngularJS와 함께 jQuery (따라서 jqLite가 아님)를 사용하면 $ .each를 반복하여 부울 리턴 값 표현식을 기반으로 중단하고 계속할 수 있습니다.
JSFiddle :
자바 스크립트 :
var array = ['foo', 'bar', 'yay'];
$.each(array, function(index, element){
if (element === 'foo') {
return true; // continue
}
console.log(this);
if (element === 'bar') {
return false; // break
}
});
노트 :
jQuery를 사용하는 것은 나쁘지 않지만 MDN은 기본 forEach 문서를 읽을 수 있으므로 기본 Array.some 또는 Array.every 함수를 모두 권장 합니다.
"forEach 루프를 중지하거나 끊을 방법이 없습니다. 해결책은 Array.every 또는 Array.some을 사용하는 것입니다."
다음 예제는 MDN에서 제공합니다.
Array.some :
function isBigEnough(element, index, array){
return (element >= 10);
}
var passed = [2, 5, 8, 1, 4].some(isBigEnough);
// passed is false
passed = [12, 5, 8, 1, 4].some(isBigEnough);
// passed is true
Array.every :
function isBigEnough(element, index, array){
return (element >= 10);
}
var passed = [12, 5, 8, 130, 44].every(isBigEnough);
// passed is false
passed = [12, 54, 18, 130, 44].every(isBigEnough);
// passed is true
구체적으로, forEach
루프를 종료 하고 어느 곳에서나 예외를 던질 수 있습니다.
try {
angular.forEach([1,2,3], function(num) {
if (num === 2) throw Error();
});
} catch(e) {
// anything
}
그러나 다른 라이브러리를 사용하거나이 경우 함수 인 자체 함수를 구현하는 것이 좋습니다 find
. 따라서 코드의 수준이 가장 높습니다.
다른 답변에서 알 수 있듯이 Angular는이 기능을 제공하지 않습니다. 그러나 jQuery는 수행하며, Angular뿐만 아니라 jQuery도로드 한 경우
jQuery.each ( array, function ( index, value) {
if(condition) return false; // this will cause a break in the iteration
})
break
각 forEach에서 달성 할 수없는 경우, 우리는 forEach를 수정해야합니다.
$scope.myuser = [{name: "Ravi"}, {name: "Bhushan"}, {name: "Thakur"}];
angular.forEach($scope.myuser, function(name){
if(name == "Bhushan") {
alert(name);
return forEach.break();
//break() is a function that returns an immutable object,e.g. an empty string
}
});
break()
정의 해야하는지 또는 이미 각도의 일부 인지 표시하십시오 . 그렇지 않은 경우 정의하십시오.
var ary = ["JavaScript", "Java", "CoffeeScript", "TypeScript"];
var keepGoing = true;
ary.forEach(function(value, index, _ary) {
console.log(index)
keepGoing = true;
ary.forEach(function(value, index, _ary) {
if(keepGoing){
if(index==2){
keepGoing=false;
}
else{
console.log(value)
}
}
});
});
이 예제는 효과가 있습니다. 시도 해봐.
var array = [0,1,2];
for( var i = 0, ii = array.length; i < ii; i++){
if(i === 1){
break;
}
}
for
루프를 원하지 않는다고 생각합니다 . 그의 유스 케이스 foreach
에는 for
아마
onSelectionChanged(event) {
let selectdata = event['api']['immutableService']['gridOptionsWrapper']['gridOptions']['rowData'];
let selected_flag = 0;
selectdata.forEach(data => {
if (data.selected == true) {
selected_flag = 1;
}
});
if (selected_flag == 1) {
this.showForms = true;
} else {
this.showForms = false;
}
}
return
대신에 사용하겠습니다 break
.
angular.forEach([0,1,2], function(count){
if(count == 1){
return;
}
});
매력처럼 작동합니다.
$ index를 추가하고 다음을 수행하십시오.
angular.forEach([0,1,2], function(count, $index) {
if($index !== 1) {
// do stuff
}
}