Profil recherche sur freecode camp de point de contrôle
Donc, je vais à travers freecodecamp et je suis résoudre les problèmes, à garder dans la boucle avec la programmation et j'ai tombé sur un os, et je ne suis pas tout à fait sûr de ce qui est mauvais.
J'ai donc un tableau d'objets appelés contacts, et j'ai besoin de créer une fonction appelée lookUp(firstName, prop)
. Le texte de l'assignation est comme ceci:
La fonction est de vérifier si
firstName
est un réel contactfirstName
et de la propriété donnée (prop
) est une propriété de ce contact.Si les deux sont vrais, alors le retour de la "valeur" de cette propriété.
Si
firstName
ne correspondent pas à des contacts puis de retour "contact"Si
prop
ne correspond à aucune des propriétés valides puis retour "propriété"
Le code:
var contacts = [
{
"firstName": "Akira",
"lastName": "Laine",
"number": "0543236543",
"likes": ["Pizza", "Coding", "Brownie Points"]
},
{
"firstName": "Harry",
"lastName": "Potter",
"number": "0994372684",
"likes": ["Hogwarts", "Magic", "Hagrid"]
},
{
"firstName": "Sherlock",
"lastName": "Holmes",
"number": "0487345643",
"likes": ["Intruiging Cases", "Violin"]
},
{
"firstName": "Kristian",
"lastName": "Vos",
"number": "unknown",
"likes": ["Javascript", "Gaming", "Foxes"]
},
];
function lookUp( firstName, prop ){
for( var i = 0; i < contacts.length; i++ ){
if( contacts[i].firstName == firstName ) {
if( contacts[i].hasOwnProperty( prop ) ) {
return contacts[i].prop;
} else {
return "No such property";
}
} else {
return "No such contact";
}
}
}
//Change these values to test your function
lookUp("Kristian", "lastName");
Je suis donc en parcourant le tableau avec for
boucle de vérification de chaque objet. Dans la première if
- je vérifier si le firstName
de la propriété des objets est égal au paramètre de la fonction de prénom, alors si c'est vrai, je vérifie si l'objet a la propriété prop
, et je devrais être en mesure de le retourner. Mais il semble que
return contacts[i].prop;
n'est pas de travail, et je suis un peu perdu quant à pourquoi. Je suis sûr que c'est quelque chose de trivial, mais je ne vois pas pourquoi. Quand je vais à la console, et de tester
contacts[0].likes
Je sors le tableau ["Pizza", "Coding", "Brownie Points"]
, mais dans mon cas qui ne fonctionne pas. Ce que je fais mal?
MODIFIER
Ok, donc j'ai essayé avec
function lookUp( firstName, prop ){
for( var i = 0; i < contacts.length; i++ ){
if( contacts[i].firstName == firstName ) {
if( contacts[i].hasOwnProperty( prop ) ) {
return contacts[i][prop];
} else {
return "No such property";
}
} else {
return "No such contact";
}
}
}
Mais j'obtiens toujours la même erreur :\
Et la question a été posée il y a 2 ans...
Ouais, en fait, >, 2.5 ans, ce qui fait de cette conversation pas que utile. J'ai surtout vu que la question a été voté à être fermé comme une faute de frappe. Je préfère les choses ont fermé comme des doublons, lorsque possible, des panneaux indicateurs. Dans ce cas, j'étais trop pressé de faire que cela se produise. Désolé à ce sujet.
Ouais, pas de problème, vous ne savez pas pourquoi tant de fermer voix tout d'un coup 😀 je vais bien le post fermé ou ouvert, tant que cela aide 🙂
OriginalL'auteur dingo_d | 2016-01-14
Vous devez vous connecter pour publier un commentaire.
Ok je suis bête, je suis sorti de ma boucle for trop tôt:
Cela fonctionne.
merci cela m'a aidé à comprendre que je devais utiliser
return contacts[i][prop]
et pasreturn contacts[i].prop
lol je souhaite que ce fut mieux expliquée dans le point de contrôle.Je pense que vous êtes confus parce que
prop
est une variable de cette fonction. J'ai fait de vous un violon pour montrer les différentes façons d'accéder à une valeur: jsfiddle.net/mgqwj9g1/2. Continuer à pratiquer cela deviendra plus clair dans l'avenir.wow ok oui je pense que cela va devenir plus clair avec la pratique. merci à vous pour la pose de chacun séparément. qui aide vraiment.
OriginalL'auteur dingo_d
Je pense que vous êtes confus au sujet de ce retour. Votre code ne font qu'une seule itération et
return "No such contact"
. Retour arrête immédiatement la fonction à exécuter. Voici un violon de ce que je veux dire démontrée avecconsole.log
https://jsfiddle.net/oegw3a4y/Dans votre situation, la première itération la valeur false dans le premier
if
déclaration et passe immédiatement à laelse
.OriginalL'auteur Michelangelo
OriginalL'auteur Ranjith Kumar Cheguri
La déclaration d'appel doit être la dernière chose dans la pile. Le ci-dessus ne fonctionne pas car la fonction renvoie "Pas de contact" avant la boucle peut itérer à la prochaine augmentation! Les ouvrages suivants:
OriginalL'auteur James Welsh
OriginalL'auteur Thanh hoàng đình
Voici ce que j'ai fait simplement en utilisant les outils qui nous a été donnée jusqu'à présent dans la FCC.
OriginalL'auteur Trent Whitinger