1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
|
---
title: Map.prototype.forEach()
slug: Web/JavaScript/Reference/Global_Objects/Map/forEach
tags:
- ECMAScript 2015
- JavaScript
- Map
- Method
- Prototype
- Reference
browser-compat: javascript.builtins.Map.forEach
---
{{JSRef}}
O método **`forEach()`** executa a função que foi provida uma vez para cada par de chave-valor no objeto `Map`, na order em que foram inseridos.
{{EmbedInteractiveExample("pages/js/map-prototype-foreach.html")}}
## Sintaxe
```js
// Arrow function
forEach(() => { ... } )
forEach((value) => { ... } )
forEach((value, key) => { ... } )
forEach((value, key, map) => { ... } )
// função de Callback
forEach(callbackFn)
forEach(callbackFn, thisArg)
// função de callback inline
forEach(function callbackFn() { ... })
forEach(function callbackFn(value) { ... })
forEach(function callbackFn(value, key) { ... })
forEach(function callbackFn(value, key, map) { ... })
forEach(function callbackFn(value, key, map) { ... }, thisArg)
```
### Parâmetros
- `callbackFn`
- : A função que será executada em cada entrada do map. Ela receberá os seguintes argumentos:
- `value` {{Optional_Inline}}
- : O valor de cada iteração.
- `key` {{Optional_Inline}}
- : A chave de cada iteração.
- `map` {{Optional_Inline}}
- : O map que está sendo iterado.
- `thisArg` {{Optional_Inline}}
- : O valor para usar como `this` quando o callback for executado.
### Valor retornado
{{jsxref("undefined")}}.
## Descrição
O método `forEach` executa o `callback` fornecido uma vez para cada chave do map
que realmente existe.
Ele não é invocado para chaves que foram deletadas.
Porém, é executado para valores que estão presentes mesmo tendo o valor `undefined`.
O `callback` é invocado com **três argumentos**:
- O `value` de entrada
- A `key` de entrada
- o **objeto `Map`** que está sendo percorrido
Se o parâmetro `thisArg` for fornecido para o `forEach`, ele será passado para o
`callback` quando for invocado, para ser usado como o valor de `this`. De outra forma,
o valor `undefined` será usado como valor de `this`. O valor de `this` será
observado pelo `callback` em última análise e será determinado de acordo com
[as regras usuais para a determinação do `this` visto por uma função](/pt-BR/docs/Web/JavaScript/Reference/Operators/this).
Cada valor será visitado uma vez, exceto no caso em que foram deletados e adicionados novamente
antes do `forEach` ser finalizado. O `callback` não é invocado para valores que foram removidos antes de
terem sidos visitados. Novos valores adicionados antes do `forEach` terminar serão visitados.
## Exemplos
### Exibindo o conteúdo de um objeto Map
O código a seguir imprime uma linha para cada elemento do objeto `Map`:
```js
function logMapElements(value, key, map) {
console.log(`map.get('${key}') = ${value}`)
}
new Map([['foo', 3], ['bar', {}], ['baz', undefined]]).forEach(logMapElements)
// logs:
// "map.get('foo') = 3"
// "map.get('bar') = [object Object]"
// "map.get('baz') = undefined"
```
## Especificações
{{Specifications}}
## Compatibilidade com navegadores
{{Compat}}
## Veja também
- {{jsxref("Array.prototype.forEach()")}}
- {{jsxref("Set.prototype.forEach()")}}
|