JavaScript:在'foreach'循环中模拟'break'

Mai*_*tor 0 javascript iteration foreach break

在迭代用户/引擎定义的函数时,实现for循环的"break"功能的最佳方法是什么?

foreach([0,1,2,3,4],function(n){
    console.log(n);
    if (n==2)
        break;});
Run Code Online (Sandbox Code Playgroud)

我曾经想过以一种在函数返回'false'时会破坏的方式实现foreach - 但我想听听有关通常如何完成的想法.

Joã*_*lva 7

returning false是最常用的方法.这就是jQuery的迭代器函数.each()所做的事情:

我们可以通过使回调函数返回false来在特定迭代中中断$ .each()循环.返回非false与for循环中的continue语句相同; 它将立即跳到下一次迭代.

它的实现非常简单:

each: function( object, callback ) {
  var i = 0, length = object.length,
  for ( var value = object[0]; 
        i < length && callback.call( value, i, value ) !== false; // break if false is returned by the callback 
        value = object[++i] ) {}
  return object;
}
Run Code Online (Sandbox Code Playgroud)