javascript - 如何从 for 循环中的回调内部中断

标签 javascript node.js for-loop callback

如果我在 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/

相关文章:

node.js - 如何使用sequelize中的两列之间获取数据

excel - 无法理解为什么 VBA 在验证 If 语句时退出我的 For-Next 循环

javascript - 通过单击另一个 div 更改和 kenburn 缩放网页背景图像

javascript - 带有 If-Match header 的 Node.js PATCH 请求

javascript - ReferenceError:Chrome 和 Mozilla 中未定义 ActiveXObject

javascript - 替代 Node 中的 fork 过程?

python - 我认为它不会花费那么多时间(for-if条件检查循环),有更好的方法吗?

jquery for 循环 : for each hovered link show related hidden div next to hovered link

javascript - 如何从字符串构建 JSON 对象键

javascript - Rails 将 JavaScript 对象存储到模型的有效方法?