roger-melo-treinamentos / curso-de-js-roger-melo

Repositório de informações do CJRM
491 stars 170 forks source link

Resumo do Exercício 31 da etapa 11 #7840

Closed Danyllo-Mendanha-dev closed 9 months ago

Danyllo-Mendanha-dev commented 9 months ago
/*
  01

  - Utilizando a fetch API, implemente uma função assíncrona que busca dados do 
    seu perfil de usuário no GitHub, através do seguinte endpoint:
    - https://api.github.com/users/SEU_NOME_DE_USUARIO_NO_GITHUB
  - Implemente uma segunda função que exibe, no console, seus dados de usuário 
    do GitHub.
*/
// fetch('https://github.com/Danyllo-Mendanha-dev')
//   .then(response => {
//     console.log(response)
//     return response.json()
//   })
//   .then(user => console.log(user))
//   .catch(error => console.log(error))
/*
  02

  - A partir do array numbers (abaixo), crie um novo array que contém somente 
    os números do array numbers que são divisíveis por 2 ou 3;
  - Exiba esse novo array no console.
*/

const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

const divisibleFor2Or3 = number => number % 2 === 0 || number % 3 === 0

const newArrayDivisibleFor2Or3 = numbers
  .filter(divisibleFor2Or3)

// console.log(divisibleFor2Or3)
/*
  03

  - Declare um array no qual cada item desse array seja uma sílaba do seu nome.
  - A partir desse array, gere o seu nome usando a "língua do 'P'";
  - A língua do "P" é uma brincadeira onde você coloca a letra "P" antes de 
    cada sílaba de uma palavra falada, como se você estivesse falando em 
    código;
  - Exemplos de nomes na "língua do 'P'":
    - Roger => "PRoPger";
    - Natália => "PNaPtáPlia";
    - Rafaela => "PRaPfaPePla".
*/
const phraseName = ['Da', 'Ny', 'llo']

const getJokeLetterP = (acc, name) =>  `${acc}P${name}`
const jokeLetterP = phraseName.reduce(getJokeLetterP , '')

// console.log(jokeLetterP)
/*
  04

  - Declare uma constante que receba seu primeiro nome;
  - Exiba no console todas as letras do seu nome separadas, com a seguinte
    mensagem: '"LETRA" é a POSIÇÃOª letra do meu nome.';
  - Por exemplo, se o nome é "Roger", as mensagens exibidas no console devem 
    ser:
      - "R" é a 1ª letra do meu nome;
      - "o" é a 2ª letra do meu nome;
      - E assim por diante, até a última letra.

  Dica: pesquise pelo método split.
*/
const name = 'Danyllo'
const nameSplit = name.split('')

const exibNameSeparator = name => `"${name}" é a 1ª letra do meu nome`
// const logMessageName = nameSplit
//   .map(exibNameSeparator)
//   .forEach(name => console.log(name))

/*
  05

  - Crie um objeto com as seguintes propriedades e tipos de valores:
    - name: String
    - lastname: String
    - age: Number
  - Exiba no console, em um array, todas as propriedades do objeto acima;
  - Não use nenhuma estrutura de repetição, nem crie o array manualmente.

  Dica: pesquise pelo método Object.keys().
*/

const object = {
  name: 'Danyllo',
  lastName: 'Silva',
  age: 19
}

// console.log(Object.keys(object))

/*
  06

  - Implemente uma função que retorna as ocorrências de um determinado valor em 
    um array;
  - A função deve receber um array como 1º argumento e o valor a ser buscado no 
    array como 2º argumento;
  - Exemplo: se na invocação da função o array [1, 2, 3, 1] é passado como 1º 
    argumento e o número 1 é passado como 2º argumento, a função deve retornar 
    2, pois há duas ocorrências do número 1 no array;
  - Utilize o array abaixo para testar a função.
*/

const returnValueArray = ((array, value) => {

  return array.reduce((acc, item) => value === item ? acc + 1 : acc, 0)
})

const scores = [100, 90, 85, 100, 60, 85, 100, 90, 55, 75, 60]

// console.log(returnValueArray(scores, 100))

/*
  07

  - Já implementamos o método some e o método map, do zero;
  - Neste exercício, seu desafio será criar o método filter, do zero;
  - Implemente uma função "filter" que possui a mesma funcionalidade do método  
    filter original;
  - Você não poderá utilizar o método filter original, embutido na linguagem;
  - A assinatura e retorno da invocação desta função devem ser os seguintes:
    - filter([1, 2, 3], item => item) // [1, 2, 3];
    - filter([0, 1, 2], item => item) // [1, 2];
    - filter([1, 2, 3], item => item < 2) // [1];
    - filter([1, 2, 3, 5], (item, index) => item === index + 1) // [1, 2, 3];
    - filter([1, 2, 3, 2, 1, 5], (item, index, array) =>
        index === array.indexOf(item)) // [1, 2, 3, 5];
  - Utilize os casos acima para testar sua função;
  - Se você não se lembra como o método filter funciona, há 2 opções:
    1) Reassistir à aula "O método filter" - Aula 01-03 da etapa 08;
    2) Pesquisar no MDN.

  Dica: lembre-se que o método filter inclui o item em questão no novo array 
  que está sendo gerado **apenas** se a função retorna um valor truthy.
*/

const filter = ((array, func) => {

  let newArray = []

  array.forEach((item, index) => {

    if (func(item, index, array)) {
      newArray.push(item)
    }

  })
  return newArray
})

console.log(filter([1, 2, 3], item => item))
console.log(filter([0, 1, 2], item => item))
console.log(filter([1, 2, 3], item => item < 2))
console.log(filter([1, 2, 3, 5], (item, index) => item === index + 1))
console.log(filter([1, 2, 3, 5], (item, index) => item === index + 1))
console.log(filter([1, 2, 3, 2, 1, 5], (item, index, array) => index === array.indexOf(item)))
<!DOCTYPE html>
<html lang="pt-BR">
<head>
  <meta charset="UTF-8">
  <title>Exercício 31</title>
</head>
<body>
  <h1>Exercício 31</h1>

  <script src="./app.js"></script>
</body>
</html>