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!
}
});
}
왜냐하면 당신이 a를 사용할 때return
안에 있는 진술each
loop, "비 false" 값은 다음과 같이 작용합니다.continue
,반면에.false
의 역할을 할 것입니다.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;
}
문서에서:
콜백 함수를 거짓으로 만들어서 특정 반복에서 $.each() 루프를 깰 수 있습니다.거짓이 아닌 것을 반환하는 것은 for 루프의 continue 문과 동일합니다. 다음 반복으로 즉시 건너뜁니다.
수정된$.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 ;
}
false/공백이 아닌 결과에 대한 루프를 차단하고 반환하므로, 사용자의 경우 다음과 같습니다.
return $.eachReturn(someArray, function(i){
...
여기:
http://jsbin.com/ucuqot/3/edit
function findXX(word)
{
$.each(someArray, function(i,n)
{
$('body').append('-> '+i+'<br />');
if(n == word)
{
return false;
}
});
}
이거 해보세요...
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!
}
}
}
"우리는 콜백 함수를 거짓으로 만들어서 특정 반복에서 $.each() 루프를 깰 수 있습니다.거짓이 아닌 것을 반환하는 것은 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 에 어울리는 것이 좋을 것 같습니다.
아니면 그냥.find()
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find 에 접속할 수 있습니다.
깃발을 세우는 것보다 자바스크립트의 것을 사용하는 것이 더 우아할 수 있습니다.Array.prototype.find
배열에서 일치하는 항목을 찾습니다.루프는 콜백에서 truthy 값이 반환되는 즉시 종료되며, 해당 반복 동안 배열 값은.find
호출의 반환 값:
function findXX(word) {
return someArray.find((item, i) => {
$('body').append('-> '+i+'<br />');
return item === word;
});
}
const 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('found word:', test);
function findXX(word) {
return someArray.find((item, i) => {
$('body').append('-> ' + i + '<br />');
return item === word;
});
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
언급URL : https://stackoverflow.com/questions/8224375/jquery-each-stop-loop-and-return-object
'source' 카테고리의 다른 글
Object.create(null)로 JS 개체를 생성하는 것이 {}과(와) 같습니까? (0) | 2023.10.22 |
---|---|
ajax 요청에 crf 토큰을 추가하는 방법 (0) | 2023.10.22 |
테이블의 항목을 재정렬하는 방법 (0) | 2023.10.22 |
C에서 함수를 가져옵니다. (0) | 2023.10.17 |
원격 분기로 로컬 분기 덮어쓰기 (0) | 2023.10.17 |