- Overview
- Transcript
4.4 The `for .. in` Loop
While a classic for loop is used for iterating arrays, a for .. in
loop is used to iterate objects.
Syntax
for .. in
1.Introduction2 lessons, 07:42
1.1Introduction02:12
1.2Setup05:30
2.Language Fundamentals8 lessons, 1:00:53
2.1Variables06:33
2.2Data Types11:28
2.3Arithmetic, Assignment, and Comparison Operators10:24
2.4Unary, Logical, Comma, and Spread Operators09:02
2.5Operator Precedence03:50
2.6Reserved Words04:17
2.7Strict Mode04:34
2.8Functions10:45
3.Data Structures5 lessons, 22:52
3.1Arrays04:29
3.2Objects04:30
3.3Sets04:57
3.4Maps04:21
3.5Weak Maps and Weak Sets04:35
4.Controlling Program Execution7 lessons, 37:06
4.1Conditionals07:49
4.2Switch Statements04:41
4.3The For Loop06:39
4.4The `for .. in` Loop05:17
4.5The `for .. of` Loop04:02
4.6Iterators05:03
4.7While Loops03:35
5.Using JavaScript13 lessons, 1:44:36
5.1Working With Strings09:32
5.2Template Literals05:46
5.3Working With Numbers06:57
5.4Working With Arrays12:53
5.5Iterating and Transforming Arrays07:33
5.6Working With the Object Type13:55
5.7Object Literal Extensions06:45
5.8Working With Object Instances06:45
5.9Getters and Setters05:00
5.10Custom Objects11:28
5.11The `Math` API04:54
5.12Working With Dates and Times08:10
5.13The `Array` Constructor04:58
6.Functions8 lessons, 56:07
6.1The `this` Object06:15
6.2Working With Functions10:11
6.3Scope07:37
6.4Arrow Functions06:59
6.5Generator Functions08:13
6.6Closures05:00
6.7Prototypes06:26
6.8Default and Rest Parameters05:26
7.Miscellaneous6 lessons, 52:39
7.1Destructuring Assignments08:09
7.2AJAX08:30
7.3Regular Expressions10:51
7.4More About Regular Expressions08:38
7.5Classes06:48
7.6ES Modules09:43
8.Working With the DOM6 lessons, 37:39
8.1Selecting HTML Elements05:02
8.2Manipulating HTML Elements07:40
8.3DOM Traversal05:25
8.4Adding and Removing Elements04:45
8.5Creating Elements and Other Nodes04:39
8.6DOM Events10:08
9.Web APIs4 lessons, 17:41
9.1The Selector API03:03
9.2Geolocation05:29
9.3Web Storage05:24
9.4Web Workers03:45
10.Asynchronous JavaScript5 lessons, 26:23
10.1Promises09:52
10.2Promise Chaining05:11
10.3The async Keyword03:21
10.4The await Keyword04:04
10.5More About async and await03:55
11.Conclusion1 lesson, 00:43
11.1Conclusion00:43
4.4 The `for .. in` Loop
Hi folks, in this lesson we're going to continue looking at loops, this time focusing on the for in loop. As we saw in the last lesson, the regular for loop is useful for iterating the values in an array. The for in loop is useful for iterating the values inside an object instead. The for in loop has a much simpler structure than the basic for loop. With this loop, we also start out with the reserved word for and a set of parentheses. But inside the parentheses, we just have a single expression. Let's take a look at an example. So let's recap the syntax briefly. We start out with the for keyword. We then have an expression within parentheses. And lastly we have a block which will be executed for each property in the object that's being iterated. So this time the expression inside parenthesis is much simpler. We simple declare a new variable, in this case called prop, and then use the in keyword followed by the object that we'd like to iterate. Inside the block, we can add a simple console.log, which shows the value of the prop variable on each iteration of the loop. And also uses the prop variable with square bracket notation to extract each value from the object. Let's just take a look at the output in the browser, and we see the three key names, and the three values. On each iteration of the loop, the variable defined within parenthesis has the value of one of the keys in the object. And the block of expressions will be invoked for each key value pair within the object. With this type of loop, we don't need to specify or maintain a counter variable manually, JavaScript takes care of that for us. For in loops are only able to iterate over properties that are marked as enumerable. When we create an object literal, like we have done here, all of the properties that we specify are enumerable. But there are ways to define object properties as non-enumerable, and we'll look at that later in the course. Just be aware that the for loop will only iterate innumerable properties. However, it is possible for objects to inherit enumerable properties from other objects. So there is a simple check that we should always perform inside the body of a for loop. So in this example, the object literal that we've defined in the variable obj has inherited a method called hasOwnProperty. And this is used to check that the property that we're currently iterating actually belongs to the object. The hasOwnProperty method itself is non-enumerable, so it doesn't get logged out in the for loop. But there are situations were enumerable properties do get inherited, even by simple object literals. So it's very common to see this hasOwnProperty check inside the body of for loops. Another difference between for loops and for in loops is that with for loops, an array's elements are accessed sequentially. From the 0th index to the last index. For in loops, however, do not guarantee the order in which properties are accessed. This means that if you use the for in loop with an array rather than an object, the loop may not access the array items in the correct sequential order. And that's the primary reason why we should always use a for loop with arrays, and a for in loop with objects. So in this lesson we looked at the for in loop which is used to iterate all of the enumerable properties within an object. We looked at the structure of the loop, and saw how to perform a hasOwnProperty check to ensure that we are only working with the object's own properties and not any that it has inherited. In the next lesson, we'll focus on the newest type of loop in JavaScript, the for of loop. Thanks for watching