- Overview
- Transcript
7.1 Destructuring Assignments
JavaScript has built-in support for destructuring arrays and objects into individual variables during assignment. This is a real time-saver. In this lesson I’ll show you how to do this, as well as how to destructure parameters in function calls.
Syntax
[] = ...
{} = ...
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
7.1 Destructuring Assignments
Hi folks, in this lesson, we're going to look at destructuring assignment. Destructuring assignment is a way to extract values held within objects and arrays, and store them in variables using a literal syntax. It actually sounds much worse than it is, it's slightly complex, but it's not as complex as it sounds. The assignment expression that we use to extract data from an array or object is known as an object pattern, and matches data inside of the item being destructured. It still sounds quite scary, but it's not, believe me. Let's take a look at a basic example. So let's see the output first, and then we'll come back and talk over the code. So in this case, we create two variables, x and y. Those variables are wrapped in an array-like syntax. So the left part of the assignment expression, the result actually looks like an array, even though it isn't an array. The right side of the assignment is the array itself. And that array has two values, the string a and the string b. So, when we create the variables x and y, the first variable x gets the value a, and the second variable y gets the value b. And that happens because of how the variables in the left hand part of the expression are declared. So x is declared first, so that takes the first value from the array. y is declared second, so that takes the second value from the array. The array on the right hand side of the expression is the array that's being destructured. So this syntax is much more concise than if we were to declare the x and y variables separately. Destructuring assignment also works with objects. So let's talk through what happens. The left hand part of the assignment looks like the object that is being destructured. So it has the same curly brackets around it as if it were an object literal. It's not an object literal, we use the curly brackets because we're destructuring an object literal. The object literal is the right-hand part of the assignment expression. So this time we create two variables called a and b. When we're destructuring an object, like we are in this example, the variable names must match keys within the object that is being destructured. So variable a gets the value of the a property, and variable b gets the value of the b property from the object being destructured. So we don't have to destructure all of the values from the item being destructured. In this case, if we only wanted to get the b key, and we didn't care about the a key, we could do this instead. And that still works, it just completely ignores the property a inside the object being destructured. And that also works with arrays, by the way, as well, but it works in a slightly different way. Let's just go back and see how that works with arrays. So this time, if we try to do that, So we still get the first item from the array. And that's because we only specified one value in the left hand side. So if we weren't interested in the first item in the array and we just wanted to get the second, we would have to do this. So all we're doing is not declaring a variable for the first item in the array. We still use a comma and then the name of the second variable to get the second item in the array. What these examples tell us so far is that destructuring is fail soft. That means it won't throw errors when values don't exist. It just might not return the values that we were expecting, as we saw with the array example. One interesting aspect of destructuring is that we can use it to return multiple values from functions. Returning an array from a function is still really just returning a single object. It's just a single object that contains multiple values. With destructuring, however, we can return multiple arrays from a function. So from the function’s perspective, we’re still returning a single array. It’s just a multi-dimensional array, which contains other arrays. Destructuring is all about the assignment, however. So even though the function is returning one array, when we destructure it, we can destructure it as if it was returning two. So we can see that we've managed to extract the two individual arrays from within the multidimensional array returned by the function. So it's kind of cheating a bit, it's not actually a function that returns multiple values, because that would be a generator function. It is just a regular function, but it is as if the function was returning multiple values, so it's still kind of cool. We can also use destructuring with complex nested structures of arrays and objects. And this is where destructuring assignment does get a little bit scary. So that expression is a bit longer than previous expressions. And because we have an object on the right hand side, which itself contains objects, the left hand side of the assignment looks a little crazier than some of the previous examples. But let's just see the output in a browser. And we can see that the output is what we probably were expecting. Because we wanted to get the employment.status value, we still need to provide a variable for employment, even though we don't actually use that in the log statement. So we still need to specify employment to actually get the object within the employment property. And then we go ahead and get the status of that nested object, and that status then becomes a variable. So the more complex the object that we're trying to destructure is, the more complex the assignment in the left hand part of the expression will be. And these can get very, very complex indeed, if the object being destructured is very complex itself. So this feature is useful, and it can save us time and effort, but it can get very, very complex very quickly. So just be careful when you're using it. So in this lesson, we looked at destructuring assignments, which is a concise way to access data held within arrays or objects. We learned that the assignment is done using the same literal syntax on the left hand side of the expression that is used to define arrays and objects in the right hand side of the expression. This makes destructuring powerful, but in some ways, syntactically intuitive. Because we know how arrays and objects are structured, we know how destructuring an assignment works. In the next lesson, we're going to look at AJAX. Thanks for watching.