What is the difference between parts of code?


#1

I know that I need to change one part of code to look like this;

var search = function(name){
for (var key in friends){
if (friends[key].firstName === name){
console.log(friends[key]);
return (friends[key]);
}
}
};

Now everything works but I don't know why code from the picture doesn't work???


#2

@daco_1,

To access object-properties you can use

  • the so-called dot-notation
    like friends.steve.firstName
    you can only use literal-property-key's
    thus NOT a VARIABLE
  • the so-called bracket-notation
    -- friends.["steve"].["firstName"] using the literal-property-key as a string
    --=or=
    -- by reference ...
    --* var key1 = "steve";
    --* var key2 = "firstName";
    --* friends[key1][key2]

#3

@daco_1,

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