Entenda por que cada vez mais devs estão recorrendo ao Javascript ForEach para manipular os elementos do array.

O universo da programação traz diversas estruturas que permitem trabalhar com repetições. Uma delas é o método JavaScript ForEach.

Ele permite fazer com que uma determinada função seja aplicada em todos os elementos do array. Dessa forma, não há a necessidade de escrever várias linhas de código com essa finalidade.

A seguir, falaremos um pouco mais sobre essa estrutura, além de mostrar situações em que esse recurso é uma boa alternativa. Confira!

Navegue pelo índice

    O que é JavaScript ForEach e como funciona?

    Desenvolvedor trabalhando em código enquanto ouve música

    Programadores que decidem trabalhar com o JavaScript ForEach podem criar uma função que será aplicada em diversos elementos.

    O JavaScript ForEach é uma ação que permite executar uma função para cada elemento, sejam eles arrays simples ou de objetos.

    Eles funcionam em uma espécie de fila, em que o primeiro elemento é o número zero, o segundo o número um e assim por diante.

    Ao organizar as informações dessa forma, o método percorre todos os elementos e executa uma ação para cada um.

    No entanto, nenhuma função é executada caso um array esteja sem elementos.

    Outro ponto importante é que o JavaScript ForEach executa uma função de callback para cada elemento no array.

    A função de callback é fornecida pelo usuário e invocada uma vez para cada item no array, recebendo três argumentos: o valor do elemento, o índice do elemento e o próprio array.

    Veja o exemplo:

    const array = [1, 2, 3, 4, 5];

    array.forEach(function(element, index, array) { 

           console.log(`Elemento: ${element}, Índice: ${index}`);

    });

    Nesse caso, a função de callback recebe o elemento atual (element), o índice desse elemento (index) e o array completo (array).

    Dentro da função de callback, estamos apenas imprimindo o elemento e seu índice.

    Vantagens de usar o JavaScript ForEach

    O JavaScript ForEach conta com uma série de benefícios em suas aplicações, sendo um recurso importante na manipulação de informações. Conheça alguns deles.

    Legibilidade aprimorada

    Uma das principais vantagens do método Javascript ForEach é a melhoria na legibilidade do código.

    Ao utilizá-lo, o código se torna mais claro e conciso. Por conta disso, o propósito da iteração é explicitamente expresso, tornando-o facilmente compreensível para outros desenvolvedores.

    Sintaxe simples

    Desenvolvedora trabalhando com múltiplos monitores

    O uso do JavaScript ForEach oferece uma sintaxe simples e fácil de entender.

    A sintaxe do JavaScript ForEach é direta e fácil de entender. Não há necessidade de declarações de loop explícitas ou manipulação de índices, o que torna o código mais limpo e menos propenso a erros.

    Evita problemas de escopo

    O método ForEach tem seu próprio escopo de função. E o que isso significa?

    Todas as variáveis declaradas na função de callback estão contidas apenas dentro dessa função.

    Isso evita potenciais conflitos de nome e problemas de escopo comuns em loops tradicionais.

    Garante compatibilidade com navegadores

    O JavaScript ForEach faz parte do ECMAScript 5 e é suportado por todos os principais navegadores modernos.

    No entanto, se a compatibilidade com browsers mais antigos for necessária, é possível usar polyfills — códigos que fornecem funcionalidades modernas a navegadores antigos — para adicionar suporte a versões anteriores do JavaScript.

    Como usar o método em JavaScript?

    Quem está interessado em trabalhar com o ForEach precisa saber que ele apresenta uma sintaxe básica e alguns parâmetros definidos. Entender como esses elementos funcionam é essencial para o sucesso de um projeto.

    Sintaxe e parâmetros

    A sintaxe básica para uso do ForEach é a seguinte:

    array.forEach(function(element, index, array) { 

          // código a ser executado para cada elemento

    });

    Os parâmetros da função de callback são:

    • element: o elemento atual sendo processado no array.
    • index (opcional): índice do elemento atual que será processado.
    • array (opcional): array ao qual pertence o elemento atual.

    Exemplo de utilização

    Suponha que tenhamos um array de objetos representando produtos e, nesse método, queremos imprimir o nome de cada um destes itens.

    Tomando por base a situação acima, teríamos o seguinte cenário:

    const produtos = [ 

         { nome: ‘Camiseta’, preco: 20 }, 

         { nome: ‘Calça’, preco: 30 }, 

         { nome: ‘Meia’, preco: 5 }

    ];

    produtos.forEach(function(produto) { 

         console.log(produto.nome);

    });

    Nesse exemplo, estamos usando ForEach para iterar sobre cada objeto de produto no array produtos, além de imprimir o nome de cada um deles no método.

    Funções de array relacionadas

    Além do ForEach, existem outras funções relacionadas que são frequentemente usadas em conjunto para manipulação de arrays, como veremos a seguir.

    Reduce

    O método reduce é usado para reduzir os elementos de um array a um único valor,aplicando uma função de callback a cada elemento.

    A aplicação seria a seguinte:

    const array = [1, 2, 3, 4, 5];

    const soma = array.reduce(function(total, elemento) { 

         return total + elemento;

    }, 0);

    console.log(soma); // Saída: 15

    Map

    Já o método map cria um novo array com os resultados da chamada de uma função de callback, retornando uma possibilidade para cada elemento do array.

    const numeros = [1, 2, 3, 4, 5];

    const dobrados = numeros.map(function(numero) { 

          return numero * 2;

    });

    console.log(dobrados); // Saída: [2, 4, 6, 8, 10]

    Filter

    Por sua vez, o método filter cria um novo array com todos os elementos que passam no teste implementado pela função de callback fornecida.

    A visualização do código seria a seguinte:

    const numeros = [1, 2, 3, 4, 5];

    const pares = numeros.filter(function(numero) {  return numero % 2 === 0;});console.log(pares); // Saída: [2, 4]

    Desenvolvedor trabalhando em escritório

    Programadores podem usar outras funções relacionadas em seus projetos.

    Formas de usar

    O JavaScript ForEach tem formas variadas de uso. Logo, a escolha ideal vai depender do escopo do projeto com o qual se está trabalhando, conforme veremos nos próximos tópicos.

    ForEach com array

    O uso mais comum do ForEach é com arrays, onde ele itera sobre cada elemento do array e executa uma operação específica.

    const array = [1, 2, 3, 4, 5];

    array.forEach(function(elemento) { 

          console.log(elemento);

    });

    ForEach com objeto

    Embora menos comum, o ForEach também pode ser usado com objetos JavaScript. Ao usar esse método, ele itera sobre as chaves do objeto, conforme podemos ver a seguir:

    const objeto = { a: 1, b: 2, c: 3 };

    Object.keys(objeto).forEach(function(chave) { 

         console.log(chave, objeto[chave]);

    });

    Loop infinito em ForEach

    É importante proceder com cautela ao modificar o array dentro de um ForEach, pois este método itera sobre cada elemento sem permitir uma interrupção direta.

    Caso a função de callback adicione elementos ao array durante a iteração, isso pode levar a um comportamento inesperado, incluindo a possibilidade de um loop infinito.

    Para evitar essas complicações, recomenda-se não alterar o array que está sendo percorrido pelo ForEach ou considerar o uso de outras estruturas de loop quando tais modificações forem necessárias.

    Isso poderia acontecer em um caso como o visto abaixo:

    const array = [1, 2, 3];

    array.forEach(function(elemento, indice, array) { 

          array.push(4); // Isso resultará em um loop infinito

    });

    Outras alternativas

    Além dos métodos já citados, o JavaScript ForEach conta com duas outras alternativas de uso: o For…of Loop e o For Loop tradicional.

    For…of Loop

    O loop for…of é uma alternativa ao ForEach para iteração sobre elementos de um array. O código para ele seria o seguinte:

    const array = [1, 2, 3, 4, 5];

    for (let elemento of array) { 

         console.log(elemento);

    }

    For Loop tradicional

    O for loop tradicional também pode ser usado para iteração sobre elementos de um array, conforme podemos ver em seguida:

    const array = [1, 2, 3, 4, 5];

    for (let i = 0; i < array.length; i++) { 

          console.log(array[i]);

    }

    Casos em que não é recomendado usar o ForEach

    Apesar de ser bastante difundido, há casos em que o ForEach pode não ser a melhor escolha, como veremos nos próximos tópicos.

    Performance crítica

    Para iterações extremamente grandes, o ForEach pode ser menos eficiente, em comparação com outras abordagens de iteração, como loops tradicionais.

    Necessidade de interrupção

    O ForEach não permite interrupção, o que significa que não é possível sair do loop prematuramente.

    Em certas situações, pode ser necessário interromper a iteração antes de percorrer todos os elementos.

    Modificação do array durante a iteração

    Modificar o array durante a iteração com ForEach pode levar a comportamentos inesperados ou, até mesmo, a um loop infinito, como mencionado anteriormente.

    Como exercitar?

    Como em qualquer outro método ou forma de programação, o uso correto exige treino. Caso esteja interessado em praticar o JavaScript ForEach e outras funções de array relacionadas, você pode:

    • Criar pequenos projetos que envolvam manipulação de arrays.
    • Resolver exercícios que exijam o uso de ForEach e outras funções de array.
    • Explorar documentações e exemplos de código para aprofundar seu entendimento e descobrir novas maneiras de usar esses métodos.

    A prática é fundamental para dominar o uso eficaz do ForEach e outras funcionalidades de JavaScript.

    Por isso, não hesite em experimentar e explorar novas maneiras de aplicar esses conceitos em seus projetos.

    Criação de sites

    Uma das formas de aplicar o conceito do Javascript ForEach é ao longo do processo de criação de um site, seja ele feito com Python, PHP ou qualquer outra linguagem de back-end.

    Você pode, por exemplo, usá-lo para percorrer os elementos de uma matriz (array) e executar uma função para cada elemento.

    O recurso também tende a ser empregado em outras frentes, quando falamos em desenvolvimento de sites.

    Há até contextos em que é possível usar timestamp Javascript em conjunto com o forEach para realizar operações baseadas no tempo.

    A Locaweb oferece uma solução completa para a hospedagem de sites, garantindo também domínio e certificado SSL grátis por um ano. Confira as condições.

    O autor

    Rodrigo Cardoso (Pokemaobr)

    Conhecido como Poke, é Streamer (Live "Coder") na Twitch, Web Developer e apresentador do talk show "The Velopers". Com bacharelado em Matemática e MBA em SOA, Poke atua como desenvolvedor e organizador de eventos de TI. É evangelista PHPSP e criador do PokePHP, focando em disseminar conteúdos técnicos e humor para a comunidade de desenvolvedores. Nas horas vagas, ele adora se conectar com a comunidade e compartilhar seu conhecimento de maneira divertida e informativa.

    Veja outros conteúdos desse autor