Eficiência usando funções de programação funcional como reduce e map
Embora a map e a reduce possam ser utilizadas com o mesmo proposito em algumas situações, é importante verificarmos em qual situação cada função se mostra mais eficiênte
Enquanto o map invoca uma função callback passada por argumento para cada elemento do Array e devolve um novo Array como resultado, o reduce devolve um valor decorrente do array, posterior à aplicação da função callback.
Usando o map()
Vejamos um exemplo, neste caso, queremos obter uma string de elementos HTML para inserirmos no nosso DOM. Seja o array:
const alunos =
[
{
id:1,
nome: "Marisa"
},
{
id:2,
nome: "Sara"
},
{
id:3,
nome: "Felipe"
}
]
Para gerarmos uma string com todos os nomes dentro de um elemento <li> podemos fazer o seguinte, utilizando a função map()
let geraListaAlunos = alunos.map(aluno=>{
return `<li>${aluno.nome}</li>`
})
console.log(geraListaAlunos)
O resultado do console.log acima é o seguinte resultado:

Ou seja, um array de strings. Para gerarmos uma string única, devemos aplicar um .join('')no geraListaAlunos
let geraListaAlunos = alunos.map(aluno=>{
return `<li>${aluno.nome}</li>`
})
geraListaAlunos = geraListaAlunos.join('')
console.log(geraListaAlunos)
O resultado, depois de usarmos o .join(''):

Usando o reduce()
Usando o mesmo array utilizado acima, vejamos o mesmo procedimento agora usando o reduce() , com o parâmetro acumulador, setado para ''
let geraListaAlunos = alunos.reduce((acumulador,item)=>{
acumulador += `<li>${item.nome}</li>`
return acumulador
},'')
console.log(geraListaAlunos)
O resultado:

Ou seja, chegamos ao mesmo resultado quando usamos o map(), porém de maneira mais eficiênte e enxuta