## Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

### Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

# When do we need to use for-in loop?

Hi guys, could you explain me better which is the difference between a normal loop and a for-in loop? It's difficult to understand which are the situations when to use one instead of the other one. Thanks for the clarification! Luca

Hi Luca, I'm just taking this course as you, so I'm not sure my answer will be 100% correct.

A for loop looks like this:

```for ( var i = 0; i  < 10; i += 1 ) {
};
```

In this example the loop will run exactly 10 times. So regular loops are great for when you know exactly how many times you need to run the through the loop. It is really good for going through arrays, because the first item in an array is array[0], the second item is array[1] and so on... And you can always use the 'length' property of an array to serve as your condition. Like this:

```var squares = [1, 4, 9, 16, 25, 36];
for ( var i = 0; i < squares.length; i += 1 ) {
console.log(squares[i])
}
```

The for...in loop goes through the properties of objects. For example, if you want to log all the values of:

```var shoppingCart = {
size: 'small',
color: 'green',
quantity: 17
};
```

You can do it with:

```for ( var prop in shoppingCart ) {
console.log( shoppingCart[prop] );
}
'''

So regular for loops are great to use when you know exactly how many times you want to run it, and when you want to go through arrays.

For...in loops are great when you want to go through objects. You didn't even have to know how long the object is!
```

```var squares = [1, 4, 9, 16, 25, 36];