我想在jQuery Each循环中立即返回奇怪的行为,我的期望是,下面的函数应该返回TRUE(条件匹配)。但我仍然变得虚假。这可以在Java中工作,但在JS / jQuery中不起作用吗?
function returnFromLoop(eventIDs) {
jQuery.each(eventIDs, function(index, item) {
if (item.indexOf("TEST") != -1) {
return true;
}
});
return false;
}
var eventIDs = [];
eventIDs.push('abc');
eventIDs.push('defTEST');
eventIDs.push('ghi');
var result = returnFromLoop(eventIDs);
console.log('result = ' + result);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
答案 0 :(得分:1)
jQuery的let transition = CATransition()
transition.duration = 0.4
transition.type = kCATransitionPush
transition.subtype = kCATransitionFromRight
self.navigationController?.view.layer.add(transition, forKey: kCATransition)
self.navigationController?.popViewController(animated: false)
方法中的return true
不会突破循环。相反,您可以使用.each()
来摆脱循环。
然后,为了捕获返回值,您可以使用变量。在下面的代码段中,我使用了变量return false
。一旦退出循环,就可以返回该变量。
来自http://api.jquery.com/jQuery.each/:
我们可以通过使回调函数返回false来在特定迭代中中断$ .each()循环。返回非false与for循环中的continue语句相同;它将立即跳到下一次迭代。
returnValue
function returnFromLoop(eventIDs) {
var returnValue = false;
jQuery.each(eventIDs, function(index, item) {
if (item.indexOf("TEST") != -1) {
returnValue = true;
return false; // Equivalent to break statement.
}
});
return returnValue;
}
var eventIDs = [];
eventIDs.push('abc');
eventIDs.push('defTEST');
eventIDs.push('ghi');
var result = returnFromLoop(eventIDs);
console.log('result = ' + result);
答案 1 :(得分:1)
问题是你试图返回两个函数,所以我使用了一个额外的变量来解决。 return true
充当继续类型,因此您需要返回false。
https://stackoverflow.com/a/8224424/6517383将帮助您了解更多信息。
function returnFromLoop(eventIDs) {
var state = 0;
jQuery.each(eventIDs, function(index, item) {
if (item.indexOf("TEST") != -1) {
state = 1;
return 1;
}
});
if(state == 1) {
return true;
}
return false;
}
var eventIDs = [];
eventIDs.push('abc');
eventIDs.push('defTEST');
eventIDs.push('ghi');
var result = returnFromLoop(eventIDs);
console.log('result = ' + result);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>