freeCodeCamp/guide/portuguese/certifications/javascript-algorithms-and-d.../basic-javascript/profile-lookup/index.md

6.0 KiB

title localeTitle
Profile Lookup Pesquisa de perfil

:triangular_flag_on_post: Lembre-se de usar Read-Search-Ask se você ficar preso. Tente emparelhar o programa :busts_in_silhouette: e escreva seu próprio código :pencil:

:checkered_flag: Explicação do Problema:

Temos uma variedade de objetos representando pessoas diferentes em nossas listas de contatos.

Uma função lookUpProfile() que usa firstName e uma propriedade ( prop ) como argumentos foi pré-escrita para você.

A função deve verificar se firstName é firstName de um contato real e a propriedade dada (PROP) é uma propriedade desse contato.

Se ambos forem verdadeiros, retorne o valor dessa propriedade.

Se firstName não corresponder a nenhum contato, retorne No such contact .

Se prop não corresponder a nenhuma propriedade válida, não retorne No such property .

  • Altere o código abaixo // Only change code below this line e até // Only change code above this line .
  • Verifique se você está editando o interior da função lookUpProfile() .
    • Esta função inclui dois parâmetros, firstName e prop .
  • A função deve procurar na lista de contatos o parâmetro firstName fornecido.
    • Se houver uma correspondência encontrada, a função deve procurar o parâmetro prop dado.
    • Se o firstName e o prop associado forem encontrados, você deve retornar o valor do prop .
    • Se firstName for encontrado e nenhum prop associado for encontrado, você deverá retornar No such property .
  • Se firstName não for encontrado em qualquer lugar, você deve retornar No such contact .

:speech_balloon: Sugestão: 1

Use um loop for para percorrer a lista de contatos .

tente resolver o problema agora

:speech_balloon: Dica: 2

Use uma instrução if aninhada para primeiro verificar se o firstName corresponde e, em seguida, verifica if o prop corresponde.

tente resolver o problema agora

:speech_balloon: Dica: 3

Deixe o seu return "No such contact" fora do loop for como um final pega-tudo.

tente resolver o problema agora

Alerta de Spoiler!

sinal de aviso

Solução à frente!

:beginner: Solução básica de código:

for (var x = 0; x < contacts.length; x++){ 
    if (contacts[x].firstName === name) { 
        if (contacts[x].hasOwnProperty(prop)) { 
            return contacts[x][prop]; 
        } else { 
            return "No such property"; 
        } 
    } 
 } 
 return "No such contact"; 

Explicação do código:

  • O loop for é executado, iniciando no primeiro objeto na lista de contatos .
  • Se o parâmetro firstName passado para a função corresponder ao valor da chave "firstName" no primeiro objeto, a instrução if transmitida.
  • Em seguida, usamos o método .hasOwnProperty() (verifica se há uma determinada propriedade e retorna um booleano) com prop como argumento. Se for verdade, o valor de prop é retornado.
    • Se a segunda instrução if falhar, No such property será retornada.
  • Se a primeira instrução if falhar, o loop for continuará no próximo objeto da lista de contatos .
  • Se o parâmetro firstName não corresponder ao objeto de contatos final, o loop for encerrado e No such contact será retornado.

Exemplo de Execução

  • lookUpProfile("Akira","likes"); corre.
  • "Akira" é correspondido à chave "firstName" no primeiro objeto, portanto, a instrução if retorna true.
  • "likes" é encontrado dentro do primeiro objeto, então o segundo if retorna true.
  • O valor de "likes" é retornado - "Pizza", "Coding", "Brownie Points" .

:clipboard: NOTAS PARA CONTRIBUIÇÕES:

  • :warning: NÃO adicione soluções semelhantes às soluções existentes. Se você acha que é semelhante, mas melhor , tente mesclar (ou substituir) a solução semelhante existente.
  • Adicione uma explicação da sua solução.
  • Categorize a solução em uma das seguintes categorias - Básica , Intermediária e Avançada . :traffic_light:
  • Por favor, adicione seu nome de usuário somente se você adicionou qualquer conteúdo principal relevante . ( :warning: NÃO remova nenhum nome de usuário existente )

Vejo :point_right: Wiki Challenge Solution Template para referência.