Jquery jeweils – Stopp-Schleife und Rückgabe-Objekt

kann mir jemand sagen warum die Schleife nach dem 5 Eintrag nicht aufgehört hat?
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+'
'); if(someArray[i] == 'someArray') { return someArray[i]; //<--- did not stop the loop! } }); }

Danke im Voraus!

   

Wenn Sie eine return statement innerhalb einer Schleife verwenden, wird ein “non-false” -Wert als continue , während false als break . Sie müssen von each function false . Etwas wie das:

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

Aus den Dokumenten :

Wir können die $ .each () – Schleife bei einer bestimmten Iteration unterbrechen, indem wir die Callback-function false zurückgeben lassen. Nicht-falsch zurückgeben ist das Gleiche wie eine continue-statement in einer for-Schleife; Es springt sofort zur nächsten Iteration.

Hier :

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

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

modifizierte $.each function

 $.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 ; } 

Es bricht die Schleife bei nicht-falschem / nicht-leerem Ergebnis und gibt es zurück, also wäre es in Ihrem Fall

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

Versuche dies …

  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! } } }