Program Tip

jQuery 각 루프에서 벗어나는 방법

programtip 2020. 10. 2. 23:09
반응형

jQuery 각 루프에서 벗어나는 방법


jQuery each루프에서 벗어나려면 어떻게해야 합니까?

나는 시도했다 :

 return false;

루프에서 그러나 이것은 작동하지 않았습니다. 어떤 아이디어?


또는 루프, 당신은 반환해야 루프 콜백.break$.each$(selector).eachfalse

반환 true은 다음 반복 으로 건너 뜁니다 continue. 일반 루프의 a 와 같습니다 .

$.each(array, function(key, value) { 
    if(value === "foo") {
        return false; // breaks
    }
});

// or

$(selector).each(function() {
  if (condition) {
    return false;
  }
});

문서에 따르면 return false;작업을 수행해야합니다.

콜백 함수가 false를 반환하도록하여 $ .each () 루프 [..]를 끊을 수 있습니다.

콜백에서 false를 반환합니다.

function callback(indexInArray, valueOfElement) {
  var booleanKeepGoing;

  this; // == valueOfElement (casted to Object)

  return booleanKeepGoing; // optional, unless false 
                           // and want to stop looping
}

BTW continue는 다음과 같이 작동합니다.

false가 아닌 반환은 for 루프의 continue 문과 동일합니다. 다음 반복으로 즉시 건너 뜁니다.


수락 된 답변이 잘못되었고이 질문과 관련하여 Google에서 반환 된 첫 번째 StackOverflow 스레드이기 때문에이 질문에 대한 답변을 위해 Fiddle을 만들었습니다.

$ .each에서 벗어나려면 다음을 사용해야합니다. return false;

이를 증명하는 Fiddle이 있습니다.

http://jsfiddle.net/9XqRy/


루프를 깨는 조건을 만났지만 .each () 함수 이후의 코드는 여전히 실행되었습니다. 그런 다음 .each () 함수 다음에 플래그를 즉시 확인하여 플래그를 "true"로 설정하여 다음 코드가 실행되지 않았는지 확인합니다.

$('.groupName').each(function() {
    if($(this).text() == groupname){
        alert('This group already exists');
        breakOut = true;
        return false;
    }
});
if(breakOut) {
    breakOut = false;
    return false;
} 

"각각"은 콜백 기능을 사용합니다. Callback 함수는 호출 함수와 관계없이 실행되므로 콜백 함수에서 호출 함수로 복귀 할 수 없습니다.

일부 조건에 따라 루프 실행을 중지하고 동일한 기능을 유지해야하는 경우 for 루프를 사용하십시오.


I know its quite an old question but I didn't see any answer, which clarify that why and when its possible to break with return.

I would like to explain it with 2 simple examples:

1. Example: In this case, we have a simple iteration and we want to break with return true, if we can find the three.

function canFindThree() {
    for(var i = 0; i < 5; i++) {
        if(i === 3) {
           return true;
        }
    }
}

if we call this function, it will simply return the true.

2. Example In this case, we want to iterate with jquery's each function, which takes anonymous function as parameter.

function canFindThree() {

    var result = false;

    $.each([1, 2, 3, 4, 5], function(key, value) { 
        if(value === 3) {
            result = true;
            return false; //This will only exit the anonymous function and stop the iteration immediatelly.
        }
    });

    return result; //This will exit the function with return true;
}

참고URL : https://stackoverflow.com/questions/1784780/how-to-break-out-of-jquery-each-loop

반응형