Oi, Francisco! Tudo bem?
O método reduce
é utilizado para iterar sobre um array e acumular um resultado com base em uma função fornecida. No nosso caso, estamos utilizando o reduce
para filtrar elementos vazios (""
) do array paragrafos
.
const result = paragrafos.reduce((acum, paragrafo) => {
if (paragrafo) {
return [...acum, paragrafo];
}
return acum;
}, []);
Neste trecho, estamos usando o reduce
para iterar sobre cada elemento do array paragrafos
, recebendo dois parâmetros principais:
- Uma função de callback que é executada para cada elemento do array.
- Um valor inicial para o acumulador (
acum
), que neste caso é um array vazio ([]
).
Dentro da função callback:
acum
é o acumulador que armazena o resultado parcial.paragrafo
é o elemento atual do array paragrafos
que está sendo processado.
A lógica dentro do reduce
é a seguinte:
- Se
paragrafo
não for uma string vazia, ele é adicionado ao acumulador acum
. Isso é feito utilizando o operador spread (...
), que expande os elementos do array acum
e adiciona o paragrafo
ao final. O resultado é um novo array que contém todos os elementos anteriores de acum
mais o paragrafo
atual. - Se
paragrafo
for uma string vazia, ele não é adicionado ao acumulador e o acumulador acum
é retornado inalterado.
Finalmente, o reduce
retorna o acumulador final, que é armazenado na constante result
.
Para ilustrar, vamos ver como o reduce
processa o array paragrafos
passo a passo:
acum
inicia como []
.- Iteração 1:
paragrafo
é "código"
. acum
se torna ["código"]
. - Iteração 2:
paragrafo
é "js"
. acum
se torna ["código", "js"]
. - Iteração 3:
paragrafo
é ""
. acum
permanece ["código", "js"]
. - Iteração 4:
paragrafo
é "web"
. acum
se torna ["código", "js", "web"]
. - Iteração 5:
paragrafo
é ""
. acum
permanece ["código", "js", "web"]
. - Iteração 6:
paragrafo
é "array"
. acum
se torna ["código", "js", "web", "array"]
.
Assim, o resultado final armazenado em result
será ["código", "js", "web", "array"]
, que é o array original sem os elementos vazios.
Espero ter ajudado!
Um forte abraço e bons estudos!