freeCodeCamp/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/es6/use-destructuring-assignment-to-assign-variables-from-arrays.english.md
Aditya 9cca21f57f [Fix] Removed unnecessary IIFEs from ES6 challenges (#34538)
* feat: removed IIFE and added solution

* feat: updated challenges seed, test and solution

* style: removed semicolon

* feat: updated seed and solution

* feat: updated challenges seed and solution

* feat: updated test, seed and solution

* fix: added seed code to solution

* fix: removed function and added solution

* fix: removed makeClass function and fixed solution

* style: removed excessive semicolons

* Fixed spacing for note in instructions section

* fix: removed assert messages and used const

* fix: regex fails correctly now
2019-03-25 09:19:34 -05:00

67 lines
1.9 KiB
Markdown

---
id: 587d7b89367417b2b2512b4b
title: Use Destructuring Assignment to Assign Variables from Arrays
challengeType: 1
---
## Description
<section id='description'>
ES6 makes destructuring arrays as easy as destructuring objects.
One key difference between the spread operator and array destructuring is that the spread operator unpacks all contents of an array into a comma-separated list. Consequently, you cannot pick or choose which elements you want to assign to variables.
Destructuring an array lets us do exactly that:
<blockquote>const [a, b] = [1, 2, 3, 4, 5, 6];<br>console.log(a, b); // 1, 2</blockquote>
The variable <code>a</code> is assigned the first value of the array, and <code>b</code> is assigned the second value of the array.
We can also access the value at any index in an array with destructuring by using commas to reach the desired index:
<blockquote>const [a, b,,, c] = [1, 2, 3, 4, 5, 6];<br>console.log(a, b, c); // 1, 2, 5 </blockquote>
</section>
## Instructions
<section id='instructions'>
Use destructuring assignment to swap the values of <code>a</code> and <code>b</code> so that <code>a</code> receives the value stored in <code>b</code>, and <code>b</code> receives the value stored in <code>a</code>.
</section>
## Tests
<section id='tests'>
```yml
tests:
- text: Value of <code>a</code> should be 6, after swapping.
testString: assert(a === 6);
- text: Value of <code>b</code> should be 8, after swapping.
testString: assert(b === 8);
- text: Should use array destructuring to swap a and b.
testString: assert(/\[\s*(\w)\s*,\s*(\w)\s*\]\s*=\s*\[\s*\2\s*,\s*\1\s*\]/g.test(code));
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
let a = 8, b = 6;
// change code below this line
// change code above this line
console.log(a); // should be 6
console.log(b); // should be 8
```
</div>
</section>
## Solution
<section id='solution'>
```js
let a = 8, b = 6;
[a, b] = [b, a];
```
</section>