IT Share you

Jquery each-루프 중지 및 객체 반환

shareyou 2020. 12. 10. 21:29
반응형

Jquery each-루프 중지 및 객체 반환


아무도 5입력 후 루프가 멈추지 않은 이유를 말해 줄 수 있습니까 ?

http://jsbin.com/ucuqot/edit#preview


$(document).ready(function()
{
  someArray = new Array();
  someArray[0] = 't5';
  someArray[1] = 'z12';
  someArray[2] = 'b88';
  someArray[3] = 's55';
  someArray[4] = 'e51';
  someArray[5] = 'o322';
  someArray[6] = 'i22';
  someArray[7] = 'k954';  

  var test =  findXX('o322');   

});

function findXX(word)
{  
  $.each(someArray, function(i)
  {
    $('body').append('-> '+i+'<br />');
    if(someArray[i] == 'someArray')
    {
      return someArray[i]; //<--- did not stop the loop!
    }   
  });  
}

당신이 사용하는 경우 때문에 return내부 문 each루프는 "비 거짓"값이 역할을 continue, 반면 falseA와 역할을합니다 break. 함수 false에서 돌아와야 each합니다. 이 같은:

function findXX(word) {
    var toReturn; 
    $.each(someArray, function(i) {
        $('body').append('-> '+i+'<br />');
        if(someArray[i] == word) {
            toReturn = someArray[i];
            return false;
        }   
    }); 
    return toReturn; 
}

로부터 문서 :

콜백 함수가 false를 반환하도록하여 특정 반복에서 $ .each () 루프를 끊을 수 있습니다. false가 아닌 값을 반환하는 것은 for 루프의 continue 문과 동일합니다. 다음 반복으로 즉시 건너 뜁니다.


여기 :

http://jsbin.com/ucuqot/3/edit

function findXX(word)
{  
  $.each(someArray, function(i,n)
  {
    $('body').append('-> '+i+'<br />');
    if(n == word)
    {
      return false;
    }   
  });  
}

수정 된 $.each기능

$.fn.eachReturn = function(arr, callback) {
   var result = null;
   $.each(arr, function(index, value){
       var test = callback(index, value);
       if (test) {
           result = test;
           return false;
       }
   });
   return result ;
}

거짓이 아니거나 비어 있지 않은 결과에서 루프를 끊고 다시 반환하므로 귀하의 경우에는

return $.eachReturn(someArray, function(i){
    ...

이 시도 ...

  someArray = new Array();
  someArray[0] = 't5';
  someArray[1] = 'z12';
  someArray[2] = 'b88';
  someArray[3] = 's55';
  someArray[4] = 'e51';
  someArray[5] = 'o322';
  someArray[6] = 'i22';
  someArray[7] = 'k954';  

  var test =  findXX('o322'); 
  console.log(test);



function findXX(word)
{  
  for(var i in someArray){


    if(someArray[i] == word)
    {
      return someArray[i]; //<---  stop the loop!
    }   
  }
}

"콜백 함수가 false를 반환하도록하여 특정 반복에서 $ .each () 루프를 끊을 수 있습니다. false가 아닌 값을 반환하는 것은 for 루프의 continue 문과 동일합니다. 즉시 다음 반복으로 건너 뜁니다."

에서 http://api.jquery.com/jquery.each/

예, 이것은 오래되었지만 질문에 답하기 위해 약간 더 간단 할 수 있습니다.

function findXX(word) {
  $.each(someArray, function(index, value) {
    $('body').append('-> ' + index + ":" + value + '<br />');
    return !(value == word);
  });
}
$(function() {
  someArray = new Array();
  someArray[0] = 't5';
  someArray[1] = 'z12';
  someArray[2] = 'b88';
  someArray[3] = 's55';
  someArray[4] = 'e51';
  someArray[5] = 'o322';
  someArray[6] = 'i22';
  someArray[7] = 'k954';
  findXX('o322');
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>

코멘트와 함께 조금 더 :

function findXX(myA, word) {
  let br = '<br />';//create once
  let myHolder = $("<div />");//get a holder to not hit DOM a lot
  let found = false;//default return
  $.each(myA, function(index, value) {
    found = (value == word);
    myHolder.append('-> ' + index + ":" + value + br);
    return !found;
  });
  $('body').append(myHolder.html());// hit DOM once
  return found;
}
$(function() {
  // no horrid global array, easier array setup;
  let someArray = ['t5', 'z12', 'b88', 's55', 'e51', 'o322', 'i22', 'k954'];
  // pass the array and the value we want to find, return back a value
  let test = findXX(someArray, 'o322');
  $('body').append("<div>Found:" + test + "</div>");
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>

참고 : .includes()여기에 배열 이 더 적합 할 수 있습니다. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/includes

또는 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find.find() 를 얻으려면

참고URL : https://stackoverflow.com/questions/8224375/jquery-each-stop-loop-and-return-object

반응형