const firstArray = [1, 4, 7, 9] // Forma normal de iteração usando um loop for (let i = 0; i < firstArray.length; i++) { firstArray[i] = firstArray[i] * 2 } // forma utilizando declarative functional const secondArray = [1, 4, 7, 9] const mappedItems = secondArray.map(x => x * 2) //Resultado firstArray // [2, 8, 14, 18] secondArray // [1, 4, 7, 9] mappedItems // [2, 8, 14, 18]
Compare escrever loops com a forma funcional em JavaScript. Usando esse padrão é possível escrever código mais curto, limpo e melhor estruturado.
Claro, este é o mais básico dos exemplos que você verá em todos os lugares. Ninguém está escrevendo programas para multiplicar números, mas o objetivo é entender quanto o modo de escrita da programação funcional podem ajudá-lo a codificar.
Na realidade, você provavelmente estará fazendo um loop de um conjunto de dados, fazendo algumas verificações condicionais, depois modificando os valores e calculando algo no final.
Deixe-me mostrar-lhe o quão fácil de ler isso pode ser comparado aos loops, escrevendo em código o que detalhei acima.
A nova forma de ver a mesma questão, num exemplo mais prática e real, para quem lida com banco de dados, executando todas as operações que acima indique, logo abaixo:
const items = [ { quantidade: 1, preco: 4.99, nome: 'Brinquedo 1', transporte: false }, { quantidade: 3, preco: 8.99, nome: 'Algum outro brinquedo', transporte: false }, { quantidade: 1, preco: 40.00, nome: 'Brinquedo ainda mais legal', transporte: false }, { preco: 4.99, nome: 'Shipping', transporte: true } ] function isShipping (item) { return !item.transporte; } function getItemPreco (item) { return item.quantidade * item.preco; } function getItemsTotal (total, atual) { return total + atual; } const precoTotalBrinquedos = items .filter(isShipping) .map(getItemPreco) .reduce(getItemsTotal, 0)
Este exemplo de código acima pode ser feito com menos linhas se você apenas escrever a lógica dentro do filtro, mapear e reduzir as funções, mas para mostrar o quão detalhado ele pode ser, abstrai a lógica em funções.
Devido ao fato de que essas funções sempre retornam um novo objeto, elas podem ser concatenadas uma após a outra para produzir resultados tão poderosos.
Toda vez que você escreve um loop, pense se você entenderá o que escreveu após um ano. Agora, veja esse código – não importa quando você olha para ele, é bem claro o que ele faz e em que ordem ele faz isso.