可以有人告诉我为什么循环没有停止后5进入?
http://jsbin.com/ucuqot/edit#preview
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语句时,一个“非假”值将作为一个continue,wheras false将作为一个break。您将需要从每个函数返回false。这样的东西:
function findXX(word) { var toReturn; $.each(someArray,function(i) { $('body').append('-> '+i+'<br />'); if(someArray[i] == word) { toReturn = someArray[i]; return false; } }); return toReturn; }
从docs:
We can break the $.each() loop at a particular iteration by making the callback function return false. Returning non-false is the same as a continue statement in a for loop; it will skip immediately to the next iteration.