¿Cómo detener el método forEach() en JavaScript?

Detener un bucle forEach() parece casi una tarea imposible, pero aquí hay algunos trucos con los que podemos hacerlo.

Ejemplo de muestra usando forEach():

var sum = 0;
var number = [90, 4, 22, 48];
number.forEach(myFunction);

function myFunction(item) {
    sum += item;
}
console.log(sum);

Trucos para detener el bucle forEach():

Método 1: El siguiente método demuestra el uso del bloque try-catch . El siguiente código demuestra rodear la cosa con un bloque try-catch y lanzar una excepción cuando se rompe el bucle forEach.

Ejemplo:

Javascript

var animals=["pig", "lion", "boar", "rabbit"];
  
try {
    animals.forEach(myFunction);
  
    function myFunction(item) {
  
        // Condition for breaking the loop
        if(item.localeCompare("boar") == 0) 
  
        /* skips rest of the statements in the
        function and goes to the catch block */
        throw new Exception("Time to end the loop"); 
        console.log(item);
    }
}
catch(e) {
    console.log("Loop has ended");
}

Producción:

pig
lion
Loop has ended

Método 2: este método en realidad no se separa del bucle forEach() , pero lo considera como una declaración continua contra todos los demás elementos, es decir, salta todos los demás elementos después del elemento que satisface la condición dada. 

Javascript

var ary = [90, 87, 45, 99];
  
ary.forEach(function loop(item) {
  
    // This statement acts like a continue
    // statement for the remaining elements
    // when the condition is satisfied
    if(loop.stop){ return;} 
  
    // Prints the element to the console
    console.log(item);
      
    // This statement acts like a condition
    // and prevents the execution of the
     // loop for the remaining elements
    if(item == 87) { 
        loop.stop = true; 
    } 
});
Output:
90
87

Publicación traducida automáticamente

Artículo escrito por coder_srinivas y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *