Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Dúvida Aula07

No curso Objetos Fundamentos do JavaScript: Objetos > 02.Manipulação de Objetos > 07.Manipulando objetos { o exercício propões: Sabendo disso, analise as afirmações abaixo e selecione a verdadeira. Se são afirmaçõES então duas ou mais estão corretas. No entanto na letra C:

Podemos utilizar o filter() para acessar um objeto do array e exibir o nome do objeto filtrado por meio do seguinte código:

const animalEstimacao = cliente.animalEstimacao.filter(animalEstimacao => animmalEstimacao.raca === "Cão") console.log(animalEstimacao.nome)

---------- ALTERNATIVA ERRADA, ENTENDI QUE: Por se tratar de um array de objetos, a propriedade animalEstimacao tem disponível as funções comuns para manipulação de array. Contudo, precisamos nos atentar que a função filter() retorna um array. Portanto, para exibir o nome do animal filtrado deve-se usar console.log(animalEstimacao[0].nome).

----------- SUBSTITUI console.log(animalEstimacao.nome) POR console.log(animalEstimacao[0].nome) E DEU ERRO.

DÚVIDA: PORQUE DEU ERRO? O filter() não deveria ter filtrado animalEstimacao que fosse da raça cão e devolvido no console o nome desde que eu usasse o colchetes? Como eu faria para imprimir o nome nesse caso?

3 respostas
solução!

Eu tenho tanta coisa pra falar desse exercício... :)

Pra começar, eu nunca usaria uma propriedade contendo ç (no caso da propriedade raça). Então, eu colocaria assim:

const cliente = {
    nome: "Jose",
    idade:33,
    email: "jose@email.com",
    telefones: ["+550033338888", "+550033334444"]
}

cliente.animalEstimacao = [{
    nome: "Kripto",
    raca: "Cão",
    vacinado: true
}]

cliente.animalEstimacao.push({
    nome: "Lex",
    raca: "Gato",
    vacinado: false
})

Mas isso é um detalhe pequeno (mas não tão pequeno quanto o fato de cão e gato não serem raças)... Vamos continuar. Depois de executar o código, este objeto termina ficando assim:

const cliente = {
    nome: "Jose",
    idade:33,
    email: "jose@email.com",
    telefones: [
        "+550033338888",
        "+550033334444"
    ],
    animalEstimacao: [
        {
            nome: "Kripto",
            raca: "Cão",
            vacinado: true
        },
        {
            nome: "Lex",
            raca: "Gato",
            vacinado: false
        }
    ]
}

A propriedade animalEstimacao é um array de objetos, né? Até aí tudo bem.

Pra mim, a questão pergunta: Sabendo disso, analise as afirmações abaixo e selecione a verdadeira., ou seja, só uma.

A alternativa A está certa, ok até agora.

A alternativa C tem um erro de digitação (animmalEstimacao) além de estar fazendo a coisa certa, chamando a propriedade de raca, sem o cedilha (o que daria erro, porque ela não foi declarada assim no enunciado da questão). Vê:

const animalEstimacao = cliente.animalEstimacao.filter(animalEstimacao => animmalEstimacao.raca === "Cão")
console.log(animalEstimacao.nome)

Eu poderia transcrever, em Javascript, (corrigindo os erros de digitação) este trecho assim:

const animalEstimacao = cliente.animalEstimacao.filter(
    function(animalEstimacao) {
        return animalEstimacao.raca === "Cão"
    }
)

Se eu rodar agora:

console.log(animalEstimacao)

funciona e retorna um array, mesmo que ele tenha um elemento só. Continua sendo um array!

Mas se eu tentar:

console.log(animalEstimacao[0])

ele retorna um dos animais, no caso, o primeiro elemento (índice 0). Sendo assim, nada me impede de rodar:

console.log(animalEstimacao[0].nome

porque agora eu tou tentando pegar a propriedade nome de um objeto, e não de um array!

De fato, a resposta do exercício é letra A, mas, definitivamente, ele precisa ser revisado.

Muito obrigada, era exatamente isso. Seu review ficou perfeito só consegui entender o conteúdo através dele. Me add no linkedin, por favor https://www.linkedin.com/in/jordanab/

Sim, sim! Marca como resposta que eu ganho ponto :)

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