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
, 반면 false
A와 역할을합니다 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
'IT Share you' 카테고리의 다른 글
jquery로 Enter 키를 눌렀는지 감지 (0) | 2020.12.10 |
---|---|
Backbone에서 뷰 믹스 인을 수행하는 적절한 방법 (0) | 2020.12.10 |
git unpack error on push to gerrit (0) | 2020.12.10 |
탐색 속성이없는 EF 코드 첫 번째 외래 키 (0) | 2020.12.10 |
Phonegap Cordova Ajax에서 404 (찾을 수 없음) 오류 요청 (0) | 2020.12.10 |