Continuing the discussion from freeCodeCamp Challenge Guide: Profile Lookup:

Here are the instructions:

Profile Lookup

We have an array of objects representing different people in our contacts lists.

A lookUpProfile function that takes firstName and a property (prop) as arguments has been pre-written for you.

The function should check if firstName is an actual contact’s firstName and the given property (prop) is a property of that contact.

If both are true, then return the “value” of that property.

If firstName does not correspond to any contacts then return “No such contact”

If prop does not correspond to any valid properties then return “No such property”

This is the solution:

```
for (var x = 0; x < contacts.length; x++){
if (contacts[x].firstName === firstName) {
if (contacts[x].hasOwnProperty(prop)) {
return contacts[x][prop];
} else {
return "No such property";
```

I don’t understand how contacts.length matches with the other variable to allow you to look up a certain property and cycle through it. Can someone please explain what part the for loop has and what each part of it means (this includes the following - ([initialization]; [condition]; [final-expression])

More specifically, how do I know where to initiate the sequence? Does zero mean the sequence starts at firstName, for example?

What condition is it measuring as true or false

What is being plussed by 1 (i++)?

I really understood the numerical experssions (like add the odd numbers) but the word problems are totally different.