1
resposta

Filho mais velho com reduce

achei legal fazer com reduce() e date também

const echo = console.log;

const cliente = {
  nome: 'Victor Rodrigues',
  nasc: Date('1998/09/18'),
  cpf: '41999233319',
  email: 'victortavi@outlook.com',
  telefones: [18996811971, 18997342222],
  filhos: [
    {
      name: 'João',
      nasc: new Date('2005/09/18')
    },
    {
      name: 'Maria',
      nasc: new Date('2001/05/10')
    }
  ]
};

cliente['filhos'].push({
  name: 'Emilly',
  nasc: new Date('2007/12/13')
});


const filhoMaisVelho = cliente['filhos'].reduce((maisVelho, atual) => {

  if (atual['nasc'] < maisVelho['nasc'])
    return atual;
  return maisVelho;

}, { semFilhos: 'Sem Filhos', nasc: new Date() });

echo(filhoMaisVelho);

dai deu pra retornar o objeto em si, e não um array com ele, já q é só uma ocorrência

Ou embutido no objeto.

const echo = console.log;

const cliente = {
  nome: 'Victor Rodrigues',
  nasc: new Date('1998/09/18'),
  cpf: '41999233319',
  email: 'victortavi@outlook.com',
  telefones: [18996811971, 18997342222],
  filhos: [
    {
      name: 'João',
      nasc: new Date('2005/09/18')
    },
    {
      name: 'Maria',
      nasc: new Date('2001/05/10')
    },
    {
      name: 'Emilly',
      nasc: new Date('2007/12/13')
    }
  ],

  obterFilhoMaisVelho: function () {

    return this['filhos'].reduce((maisVelho, atual) => {

      if (atual['nasc'] < maisVelho['nasc'])
        return atual;
      return maisVelho;

    }, { semFilhos: 'Sem Filhos', nasc: new Date() });
  }
};

echo(cliente.obterFilhoMaisVelho());

vale lembrar que a partir do ES6, o método de um objeto pode ser resumido para

      //...
      nasc: new Date('2007/12/13')
    }
  ],

  obterFilhoMaisVelho() {

    return this['filhos'].reduce((maisVelho, atual) => {

      if (atual['nasc'] < maisVelho['nasc'])
        return atual;
      return maisVelho;

    }, { semFilhos: 'Sem Filhos', nasc: new Date() });
  }
};

echo(cliente.obterFilhoMaisVelho());

eliminando o uso da palavra function.

E com mais uma pitada de açúcar sintático, com operador ternário:

      //...
      nasc: new Date("2007/12/13"),
    },
  ],

  obterFilhoMaisVelho() {
    return this["filhos"].reduce(
      (maisVelho, atual) =>
        atual["nasc"] < maisVelho["nasc"] ? atual : maisVelho,
      { semFilhos: "Sem Filhos", nasc: new Date() }
    );
  }
};

echo(cliente.obterFilhoMaisVelho());
1 resposta

Olá Victor, tudo bem com você?

Peço desculpa pela demora para responder o seu tópico.

Fico feliz que tenha tentando resolver a atividade de outra forma, que entre nos, ficou bem completa. Sem falar da forma que você passou o console.log() para a variável echo, deixando de forma mais interativa a mostragem dos resultados. Isso mostra o seu comprometimento com os seus estudos.

Espero que continue assim!

Caso durante os seus estudos você tenha dúvidas ou problemas, recorra ao fórum, estaremos aqui para ajudá-lo.

Abraços e bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software