resueltos - Javascript para... ¿En problema de sintaxis?
manual javascript pdf 2017 (2)
La función de búsqueda en el siguiente código no funciona y creo que tiene algo que ver con el ciclo For ... In pero soy nuevo en JS y no estoy seguro de por qué:
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");
El bucle for in
itera sobre las claves , no sobre los valores.
friend
es una cadena que contiene el nombre de cada propiedad.
Para obtener el valor, usa friends[friend]
.
Se puede encontrar una gran documentación del bucle for..in en mdn . Donde la variable
se asigna a través de cada iteración a "un nombre de propiedad diferente".
También es posible que no necesites pasar por cada amigo. ¿Qué hasOwnProperty
si cambió su función de búsqueda para usar hasOwnProperty
en el objeto?
var search = function(name) {
if(friends.hasOwnProperty(name)){
return friends[name];
}
};
Esto verificaría que tiene una propiedad de name
en los friends
objeto y la devolverá. Aquí hay un EJEMPLO rápido.