繁体   English   中英

如何从 Javascript 中的嵌套 forEach 函数中断 for in 循环?

[英]How can i break a for in loop from nested forEach Function in Javascript?

我有一个这个循环

for (var key in params) {
  if (Array.isArray(params[key])) {
    params[key].every(function(item) {
      let value = something(item.start, item.end);
      if (value === item.start || value == item.end) {
        return false // break
      }
    })
  }
}

当我设置return false以停止every()函数时,我也想停止第一个循环。 我怎样才能做到这一点? 我试过这个:

OUTER_LOOP: for (var key in params) {
  if (Array.isArray(params[key])) {
    params[key].every(function(item) {
      let value = something(item.start, item.end);
      if (value === item.start || value == item.end) {
        return false // break
        break OUTER_LOOP; // not working
      }
    })
  }
}

但它不能以这种方式工作......那么我怎样才能正确地同时停止every()函数和第一个循环?

你可以采取Array#some ,回到true出境some和使用的返回值some打破循环。

for (var key in params) {
    if (Array.isArray(params[key])) {
        const
            leave = params[key].some(item => {
                let value = something(item.start, item.end);

                // exit condition should return true/truthy value
                // for leaving the outer loop
                return value === item.start || value == item.end;
            });

        if (leave) break;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM