while resueltos lenguaje ejemplos completo comandos ciclo javascript loops for-loop iterator for-in-loop

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.