В jQuery каждого - стоп петля и возврат объекта
может кто-нибудь сказать мне, почему цикл не остановился после записи 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!
}
});
}
спасибо заранее!
4 ответов:
потому что, когда вы используете
returnзаявление внутриeachloop, значение "non-false" будет действовать какcontinue, wherasfalseбудет действовать какbreak. Вам нужно будет вернутьсяfalseС
здесь :
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! } } }
Comments