95 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			95 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| 
								 | 
							
								---
							 | 
						||
| 
								 | 
							
								title: Array Destructuring
							 | 
						||
| 
								 | 
							
								---
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Array Destructuring
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Destructuring is a convenient way of extracting multiple values from data stored in Arrays. It can be used in locations that receive data (such as the left-hand side of an assignment). This feature is introduced in `ECMAScript 6`.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								How to extract the values is specified via patterns (read on for examples).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### Basic variable assignment
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								var names = ['neel', 'meet', 'darshan'];
							 | 
						||
| 
								 | 
							
								var [nameOne, nameTwo, nameThree] = names;
							 | 
						||
| 
								 | 
							
								console.log(nameOne); // "neel"
							 | 
						||
| 
								 | 
							
								console.log(nameTwo); // "meet"
							 | 
						||
| 
								 | 
							
								console.log(nameThree); // "darshan"
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### Assignment separate from declaration
							 | 
						||
| 
								 | 
							
								A variable can be assigned its value via destructuring separate from the variable's declaration.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								var a, b;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								[a, b] = [1, 2];
							 | 
						||
| 
								 | 
							
								console.log(a); // 1
							 | 
						||
| 
								 | 
							
								console.log(b); // 2
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### Default values
							 | 
						||
| 
								 | 
							
								A variable can be assigned a default, in the case that the value unpacked from the array is `undefined`.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								var a, b;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								[a=5, b=7] = [1];
							 | 
						||
| 
								 | 
							
								console.log(a); // 1
							 | 
						||
| 
								 | 
							
								console.log(b); // 7
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### Parsing an array returned from a function
							 | 
						||
| 
								 | 
							
								It's always been possible to return an array from a function. Destructuring can make working with an array return value more concise.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								In this example, `getNames()` returns the values `['neel', 'meet']` as its output, which can be parsed in a single line with destructuring.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								function getNames() {
							 | 
						||
| 
								 | 
							
								  return ['neel', 'meet'];
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var neel, meet; 
							 | 
						||
| 
								 | 
							
								[nameOne, nameTwo] = getNames(); 
							 | 
						||
| 
								 | 
							
								console.log(nameOne); // neel
							 | 
						||
| 
								 | 
							
								console.log(nameTwo); // meet
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### Ignoring some returned values
							 | 
						||
| 
								 | 
							
								You can ignore return values that you're not interested in:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								function getNames() {
							 | 
						||
| 
								 | 
							
								  return ['neel', 'meet', 'darshan'];
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var [nameOne, , nameThree] = getNames();
							 | 
						||
| 
								 | 
							
								console.log(nameOne); // neel
							 | 
						||
| 
								 | 
							
								console.log(nameThree); // darshan
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								You can also ignore all returned values:
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								[,,] = getNames();
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### Assigning the rest of an array to a variable
							 | 
						||
| 
								 | 
							
								When destructuring an array, you can unpack and assign the remaining part of it to a variable using the rest pattern:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								var [a, ...b] = [1, 2, 3];
							 | 
						||
| 
								 | 
							
								console.log(a); // 1
							 | 
						||
| 
								 | 
							
								console.log(b); // [2, 3]
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Note that a `SyntaxError` will be thrown if a trailing comma is used on the left-hand side with a rest element:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								var [a, ...b,] = [1, 2, 3];
							 | 
						||
| 
								 | 
							
								// SyntaxError: rest element may not have a trailing comma
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								See also: <a>**Array Destructuring**</a> | <a href='https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment#Array_destructuring' target='_blank' rel='nofollow'>MDN</a>
							 |