如果我在 JavaScript 中绑定(bind)
函数find
,我可以执行以下操作:
const _array = [4,10,6,5,20];
const loop = Array.prototype.find.bind(_array);
const r = loop(function (x) {
return x === 6;
});
console.log(`Final result => ${r}`); // here prints: Final result => 6
如您所见,在绑定(bind)loop
函数中,我有一个从find
返回的回调。一切正常,一切正常......
但是,尝试模拟类似的事情,我以此结束:
function loop(a,callback) {
for(i=0;i<a.length;i++)
callback(a[i]);
};
const r = loop([4,10,6,5,20], function (x) {
console.log("x value", x);
return x===6; // need to break the loop function and return to 'r' the 'x' value
});
console.log(`Final result => ${r}`); // here would print the value of x, that would be 6
我得到:
x value 4
x value 10
x value 6
x value 5
x value 20
undefined
r
函数内的 return x===6
无法正常工作,因为 for 循环
一直持续到最后,这意味着什么。
所以,我的问题:
如何在 x===6
时中断 loop
函数并返回 x
的值?
最佳答案
检查回调返回什么值,然后决定是否继续:
function loop(a, callback) {
for (let i = 0; i < a.length; i++) {
const found = callback(a[i]);
if (found) {
return a[i];
}
}
}
const r = loop([4,10,6,5,20], function (x) {
console.log("x value", x);
return x===6;
});
console.log(`Final result => ${r}`);
关于javascript - 如何从 for 循环中的回调内部中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52543404/