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.