Skip to content

Instantly share code, notes, and snippets.

@DiegoPinho
Last active May 22, 2024 14:20
Show Gist options
  • Save DiegoPinho/2f5297799d330e0bfdabb78d5c5ee199 to your computer and use it in GitHub Desktop.
Save DiegoPinho/2f5297799d330e0bfdabb78d5c5ee199 to your computer and use it in GitHub Desktop.
Exercícios de HOFs (map, forEach e filter)

Exercícios

Nestes exercícios iremos exercitar os métodos auxiliares para array:

  • forEach
  • map
  • filter

Exercício 1 - Par ou ímpar?

Altere o código a seguir para utilizar a função forEach de modo que a saída permaneça a mesma.

const numeros = [0,1,2,3,4,5];
for(let i = 0; i<= numeros.length; i++) {
    if(i % 2 === 0) {
        console.log(i + ' é par');
    } else {
        console.log(i + ' é ímpar');
    }
}

// saída:
// 0 é par
// 1 é ímpar
// 2 é par
// 3 é ímpar
// 4 é par
// 5 é ímpar

Exercício 2 - Quero o dobro

Utilizando o método map, escreva a função dobrar que recebe um array de números inteiros e retorna um array com todos os valores do array original dobrados.

  • Exemplo: dobrar([1,2,3]) → [2,4,6]

Exercício 3 - NÃO ESTOU BRAVO

Escreva o método caps que recebe um array de strings e retorna um outro array com todas as strings do array original em CAIXA ALTA. Use a função toUpperCase do tipo String.

  • Exemplo: caps(['oi', 'tudo', 'bem?']) → ['OI', 'TUDO', 'BEM?']

Exercício 4 - Reprovado!

Dada uma lista de objetos que contém o nome de um aluno e sua média final, implemente a função 'aprovados' que recebe esta lista e retorna somente os alunos que foram aprovados.

Para isto, utilize a função filter.

const alunos = [
  { nome: 'Diogo', media: 5.5 },
  { nome: 'Julia', media: 9.5 },
  { nome: 'Roberto', media: 1.5 },
  { nome: 'Tiago', media: 6.0 }
];
  • Exemplo: aprovados(alunos, 6.5) → [ { nome: 'Julia', media: 9.5 } ]

Exercício 5 - Calculadora humana

Crie uma função calcularAreaTotal que recebe um parâmetro:

  • dimensoes: objeto que possui as propriedades altura e comprimento que são números inteiros

A função deve retornar a soma de todas as áreas.

Tome como base a entrada a seguir:

const dimensoes = [
  { altura: 10, comprimento: 20},
  { altura: 2, comprimento: 4},
  { altura: 1, comprimento: 1},
  { altura: 50, comprimento: 50}
]
  • Exemplo: calcularAreaTotal(dimensoes) → 2709

Exercício 6 - A pequena ovelha Dolly

Utilizando a função forEach, crie uma função clonar que recebe como parâmetro um objeto e cria uma cópia exata dela.

  • utilize o método Object.getOwnPropertyNames para obter as propriedades do objeto.

Exercício 7 - Paneirinha flexível

Crie uma função chamada filtrarPorValorMinimo que recebe três parâmetros:

  • um array de objetos (array)
  • o nome do atributo que será usado como filtro (string)
  • o valor mínimo que o atributo deve ter para passar no filtro (number)
  • exemplo: filtrarPorValorMinimo([{nome:"diego", idade:22}, {nome:"luana", idade:44}], "idade", 44) -> [{nome: "luana", idade: 44}]

Exercício 8 - HTML dinâmico no capricho!

Crie uma função chamada converterParaHTML que recebe como parâmetro um array objetos e retorna um array com as informações destes objetos convertidas.

  • exemplo:
const elementos = [
  {tag: "img", atributos: [{chave: "alt", valor:"imagem!"}, {chave: "src", valor: "imagem.png"}], conteudo:""},
  {tag: "p", atributos: [{chave: "class", valor:"texto"}], conteudo: "sou um parágrafo!"},
  {tag: "h1", atributos:[], conteudo: "sou um título"}
];

const HTML = converterParaHTML(elementos);
console.log(HTML);
// resultado
[
  "<img src="imagem.png" alt="imagem!" />",
  "<p class="texto">sou um parágrafo!</p>",
  "<h1>sou um título</h1>"
]

Exercício 9 - E tem alguma diferença?

Diga, em poucas palavras, qual a diferença entre os métodos auxiliares forEach e map.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment