---
title: Você pode descrever a principal diferença entre um loop `.forEach` e um loop `.map()`?
subtitle: Por que você escolheria um em vez do outro?
---

Para entender as diferenças entre os dois, vamos ver o que cada função faz.

## `forEach`

- Itera através dos elementos em uma matriz.
- Executa um callback para cada elemento.
- Não retorna um valor.

```js
const a = [1, 2, 3];
const doubled = a.forEach((num, index) => {
  // Faça algo com num e/ou índice.
});

// doubled = undefined
```

## `map`

- Itera através dos elementos em uma matriz.
- "Mapeia" cada elemento para um novo elemento chamando a função em cada elemento, criando um novo array como resultado.

```js
const a = [1, 2, 3];
const doubled = a.map((num) => {
  return num * 2;
});

// duplicou = [2, 4, 6]
```

A principal diferença entre `.forEach` e `.map()` é que `.map()` retorna um novo array. Se você precisa do resultado, mas não deseja alterar o array original, `.map()` é a opção clara. Se você simplesmente precisa iterar sobre um array, `forEach` é uma ótima escolha.
