Para demonstrar a utilização do .select, .map e o .reduce, eu irei utilizar alguns dados de um dos meus artigos anteriores: JavaScript: map(), filter() e reduce().
Tendo esse artigo como referência, vamos criar os seguintes exemplos:
- Selecionar apenas os cachorros
- Retornar a idade real de cada cachorro
- Somar a idade de todos os cachorros juntos
Utilizando o seguinte array de objetos:
pets = [ { name: 'Butters', age: 3, type: 'dog' }, { name: 'Lizzy', age: 6, type: 'dog' }, { name: 'Red', age: 1, type: 'cat' }, { name: 'Joey', age: 3, type: 'dog' }, ];
Selecionar apenas os cachorros
Para selecionar apenas os pets com o type dog, eu irei utilizar o .select. Abaixo você tem um exemplo demonstrando esse passo:
pets = [{name: "Butters", age: 3, type: "dog"}, {name: "Lizzy", age: 6, type: "dog"}, {name: "Red", age: 1, type: "cat"}, {name: "Joey", age: 3, type: "dog"}] puts pets.select { |item| item[:type] == "dog" }
Resultado:
Retornar a idade real de cada cachorro
Agora que filtramos para retornar todos cachorros do nosso array, vamos calcular a idade real de cada de cada um deles. Para isso, nós podemos utilizar o .map.
Observação: não podemos esquecer que um ano nosso, são sete de um cachorro.
dogs.map { |dog| puts dog[:age] * 7 }
Resultado:
Somar a idade de todos os cachorros
Para finalizar, vamos somar a idade de todos cachorros do nosso array. Para isso, vamos utilizar o reduce:
puts dogs.map { |dog| dog[:age] * 7 }.reduce(:+)
Bem simples, né?
Nesse primeiro momento resolvi demonstrar eles em um cenário simples, para que nos próximos artigos nós possamos criar alguns exemplos mais complexos.
Com isso, finalizamos mais esse artigo. Espero que tenham gostado e até a próxima, pessoal!