Search for a friend - working code // purpose of for in loop


#1

Ok so I understand everything but, what is the purpose of "containerKey" and why do I need to list friends[containerKey] friends function is not an array.

`var friends = {};

friends.bill = {
firstName: "Bill",
lastName: "Gates",
number: "+65 555 333",
address: ['One Microsoft Way','Redmond','WA','98052']
};
friends.karl = {
firstName: "Karl",
lastName: "Marx",
number: "+22 665 222",
address: ['Two Microsoft Way','Redmond','WA','55052']
};
friends.steve = {
firstName: "Steve",
lastName: "Gates",
number: "+55 333 444",
address: ['Three Microsoft Way','Redmond','WA','96852']
};

var list = function(friends) {
for(var container in friends) {
console.log(container);
}
}
console.log("-----------------------------");
var search = function(name) {
for(var containerKey in friends) {
if(friends[containerKey].firstName === name) {
console.log(friends[containerKey]);
return friends[containerKey];
}
}
}

search("Karl");`


#2

@boardmaster17391,

+++ friends list and search and for-in explained.
Look here for an explanation
object
function
for-in-loop
list-function
search-function
http://www.codecademy.com/forum_questions/545275fd8c1ccc8e3e000a23#comment-5457b12c9c4e9d87cb00003f


#3

Hey, sorry to bother. I read the link but just to be confident with my interpretation of it

using the constructor notation, the friends.names can't be divided further as friends.john.firstName

friends.tanita.firstName?

That's how i made my objects in objects look.

Really sorry if i come across like a dunce.


#4

@artreyu,
I do not understand what you are trying to express....
Maybe you could give you could give the code you are using ???
Try to use more console.log( friends );
to look at the result of your code.....

====================================================

var friends= {
              bill: { firstName: 'Bill',
                      lastName: 'Gates',
                      number: '444-444-4444',
                      address: [ 'One Microsoft way', 'Redwood', 'WA' ]
              },
             steve: {
                      firstName: 'Steve',
                      lastName: 'Jobs',
                      number: '333-333-3333',
                      address: [ 'Two infinite loop', 'Bentown', 'DV' ] 
              }
   };

keep repeating these two lines
An object has one or more properties seperated by a comma-,
Each property consists of a property-key and it's associated value

Description of the friends object.
The friends object has 2 properties and are seperated by a comma-,

there is a bill property with property-key bill and it's associated object value
(this associated object has 4 properties, the property-keys being firstName, lastName,number and address)
there is a steve property with property-key steve and it's associated object value
(this associated object has 4 properties, the property-keys being firstName, lastName,number and address)

access via dot-notation == only literal property-key allowed

friends.bill ==> you will get the associated value of the bill property-key, thus
you get the object with 4 properties

friends.bill.lastName ==> you will get the associated value of the lastName property-key

access via the square-bracket-notation == literal & VARIABLE

1 using the literal property-key

friends["bill"]
friends["bill"]["lastName"]

2 using the property-key by reference (=== via a variable )

var propertyKey1 = "bill";
var propertyKey2 ="lastName";
friends[propertyKey1] ==> you will get the associated value of the bill property-key, thus
you get the object with 4 properties

friends[propertyKey1][propertyKey2]
in this case you will get the string VALUE of the lastName property
of the associated object VALUE of bill