Javascript For … Dans le problème de la syntaxe?

La fonction de recherche dans le code suivant ne fonctionne pas et je crois qu'il a quelque chose à voir avec le For … En boucle mais je suis nouveau sur JS et incertain pourquoi:

var friends = { bill: { firstName: "bill", lastName: "smith", number: 1, address: ["1"] }, steve: { firstName: "steve", lastName: "smith", number: 2, address: ["2"] } }; var list = function(list) { for(var item in list) { console.log(item); } }; var search = function(name) { for(var friend in friends) { if(friend.firstName === name) { console.log(friend); return friend; } } }; search("steve"); 

La boucle for in boucle itère sur les clés , pas les valeurs.

friend est une chaîne contenant le nom de chaque propriété.
Pour obtenir la valeur, utilisez des friends[friend] .

Une excellente documentation de la boucle for..in se trouve sur mdn . Lorsque la variable est affectée par chaque itération à "un nom de propriété différent".

Vous n'aurez peut-être pas besoin de parcourir chaque ami. Que faire si vous avez changé votre fonction de recherche pour utiliser hasOwnProperty sur l'objet:

 var search = function(name) { if(friends.hasOwnProperty(name)){ return friends[name]; } }; 

Cela vérifiera que vous avez une propriété de name dans les friends objet et renvoyez-le. Voici un EXEMPLE rapide.