
Resumo do que vamos ver
- Funções como variáveis (funções anônimas)
- Revisão de arrow functions
- Funções como parâmetros (high-order functions)
- Exemplo Array.prototype.filter()
- Comparação com for
- Utilização do .filter()
- Separação de funções
Passo a passo
- Em javascript (e outras linguagens) podemos escrever funções como valores e atribuir à variáveis utilizando funções anônimas:
12345678910111213function greet(name) {return `Hello, ${name}!`}const greet = function (name) {return `Hello, ${name}!`}const foo = greetconsole.log(greet('John'))console.log(foo('bar')) - Também podemos escrever as funções anônimas através de arrow functions:
123456789101112131415function greet(name) {return `Hello, ${name}!`}const greet = (name) => {return `Hello, ${name}!`}const greet = name => `Hello, ${name}`const foo = greetconsole.log(greet('John'))console.log(foo('bar')) - Também podemos passar funções como parâmetros para outras funções, chamadas high-order functions:
1234567891011function greet(name) {return `Hello, ${name}!`}function speakToMary(dialog) {const text = dialog('Mary')return `He says "${text}"`}console.log(speakToMary(greet)) - Vamos exemplificar através da função Array.prototype.filter():
1234567891011121314151617181920const characters = [{ name: 'Frodo', race: 'Hobbit' },{ name: 'Sam', race: 'Hobbit' },{ name: 'Aragorn', race: 'Man' },{ name: 'Legolas', race: 'Elf' },{ name: 'Gimli', race: 'Dwarf' },{ name: 'Boromir', race: 'Man' },{ name: 'Merry', race: 'Hobbit' },{ name: 'Pippin', race: 'Hobbit' },{ name: 'Gandalf', race: 'Ainur' },]const hobbits = []for (let i = 0; i < characters.length; i++) {if (characters[i].race === 'Hobbit') {hobbits.push(characters[i])}} - Vejamos como podemos obter o mesmo resultado com menos código:
12345678910111213141516const characters = [{ name: 'Frodo', race: 'Hobbit' },{ name: 'Sam', race: 'Hobbit' },{ name: 'Aragorn', race: 'Man' },{ name: 'Legolas', race: 'Elf' },{ name: 'Gimli', race: 'Dwarf' },{ name: 'Boromir', race: 'Man' },{ name: 'Merry', race: 'Hobbit' },{ name: 'Pippin', race: 'Hobbit' },{ name: 'Gandalf', race: 'Ainur' },]const hobbits = characters.filter(function (character) {return character.race === 'Hobbit'}) - Ainda podemos utilizar as arrow functions para deixar o código ainda mais legível:
1234567891011121314const characters = [{ name: 'Frodo', race: 'Hobbit' },{ name: 'Sam', race: 'Hobbit' },{ name: 'Aragorn', race: 'Man' },{ name: 'Legolas', race: 'Elf' },{ name: 'Gimli', race: 'Dwarf' },{ name: 'Boromir', race: 'Man' },{ name: 'Merry', race: 'Hobbit' },{ name: 'Pippin', race: 'Hobbit' },{ name: 'Gandalf', race: 'Ainur' },]const hobbits = characters.filter(character => character.race === 'Hobbit') - E por fim ainda podemos separar as funções:
12345678910111213141516const characters = [{ name: 'Frodo', race: 'Hobbit' },{ name: 'Sam', race: 'Hobbit' },{ name: 'Aragorn', race: 'Man' },{ name: 'Legolas', race: 'Elf' },{ name: 'Gimli', race: 'Dwarf' },{ name: 'Boromir', race: 'Man' },{ name: 'Merry', race: 'Hobbit' },{ name: 'Pippin', race: 'Hobbit' },{ name: 'Gandalf', race: 'Ainur' },]const isHobbit = character => character.race === 'Hobbit'const hobbits = characters.filter(isHobbit)
Subscribe
0 Comentários