"Мы можем разорвать цикл $ .each () на определенной итерации, сделав функцию обратного вызова возвращающей false. Возвращение не-false - это то же самое, что и оператор continue в цикле for; он будет сразу пропущен доследующая итерация. "
из 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