Files
.github
api-server
client
config
curriculum
__fixtures__
challenges
_meta
chinese
english
01-responsive-web-design
02-javascript-algorithms-and-data-structures
basic-algorithm-scripting
basic-data-structures
basic-javascript
basic-javascript-rpg-game
debugging
es6
compare-scopes-of-the-var-and-let-keywords.md
complete-a-promise-with-resolve-and-reject.md
create-a-javascript-promise.md
create-a-module-script.md
create-an-export-fallback-with-export-default.md
create-strings-using-template-literals.md
declare-a-read-only-variable-with-the-const-keyword.md
explore-differences-between-the-var-and-let-keywords.md
handle-a-fulfilled-promise-with-then.md
handle-a-rejected-promise-with-catch.md
import-a-default-export.md
mutate-an-array-declared-with-const.md
prevent-object-mutation.md
reuse-javascript-code-using-import.md
set-default-parameters-for-your-functions.md
use--to-import-everything-from-a-file.md
use-arrow-functions-to-write-concise-anonymous-functions.md
use-class-syntax-to-define-a-constructor-function.md
use-destructuring-assignment-to-assign-variables-from-arrays.md
use-destructuring-assignment-to-assign-variables-from-nested-objects.md
use-destructuring-assignment-to-assign-variables-from-objects.md
use-destructuring-assignment-to-extract-values-from-objects.md
use-destructuring-assignment-to-pass-an-object-as-a-functions-parameters.md
use-destructuring-assignment-with-the-rest-parameter-to-reassign-array-elements.md
use-export-to-share-a-code-block.md
use-getters-and-setters-to-control-access-to-an-object.md
use-the-rest-parameter-with-function-parameters.md
use-the-spread-operator-to-evaluate-arrays-in-place.md
write-arrow-functions-with-parameters.md
write-concise-declarative-functions-with-es6.md
write-concise-object-literal-declarations-using-object-property-shorthand.md
functional-programming
functional-programming-spreadsheet
intermediate-algorithm-scripting
intermediate-javascript-calorie-counter
javascript-algorithms-and-data-structures-projects
object-oriented-programming
regular-expressions
03-front-end-libraries
04-data-visualization
05-apis-and-microservices
06-quality-assurance
07-scientific-computing-with-python
08-data-analysis-with-python
09-information-security
10-coding-interview-prep
11-machine-learning-with-python
12-certificates
.markdownlint.yaml
dictionaries
schema
test
.babelrc
LICENSE.md
create-challenge-bundle.js
crowdin.yml
getChallenges.acceptance.test.js
getChallenges.js
getChallenges.test.js
gulpfile.js
lib.js
package-entry.js
package-lock.json
package.json
utils.js
cypress
docs
tools
utils
.editorconfig
.eslintignore
.eslintrc-base.json
.eslintrc.json
.gitattributes
.gitignore
.gitpod.yml
.node-inspectorrc
.npmrc
.prettierignore
.prettierrc
.snyk
.vcmrc
CODE_OF_CONDUCT.md
CONTRIBUTING.md
HoF.md
LICENSE.md
README.md
SECURITY.md
change_volumes_owner.sh
cypress-install.js
cypress.json
jest.config.js
lerna.json
lighthouserc.js
package-lock.json
package.json
sample.env
freeCodeCamp/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/es6/use-destructuring-assignment-to-assign-variables-from-arrays.md
Oliver Eyton-Williams 0bd52f8bd1 Feat: add new Markdown parser ()
and change all the challenges to new `md` format.
2020-11-27 10:02:05 -08:00

67 lines
1.5 KiB
Markdown

---
id: 587d7b89367417b2b2512b4b
title: Use Destructuring Assignment to Assign Variables from Arrays
challengeType: 1
forumTopicId: 301213
---
# --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:
```js
const [a, b] = [1, 2, 3, 4, 5, 6];
console.log(a, b); // 1, 2
```
The variable `a` is assigned the first value of the array, and `b` 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:
```js
const [a, b,,, c] = [1, 2, 3, 4, 5, 6];
console.log(a, b, c); // 1, 2, 5
```
# --instructions--
Use destructuring assignment to swap the values of `a` and `b` so that `a` receives the value stored in `b`, and `b` receives the value stored in `a`.
# --hints--
Value of `a` should be 6, after swapping.
```js
assert(a === 6);
```
Value of `b` should be 8, after swapping.
```js
assert(b === 8);
```
You should use array destructuring to swap a and b.
```js
assert(/\[\s*(\w)\s*,\s*(\w)\s*\]\s*=\s*\[\s*\2\s*,\s*\1\s*\]/g.test(code));
```
# --seed--
## --seed-contents--
```js
let a = 8, b = 6;
// Only change code below this line
```
# --solutions--
```js
let a = 8, b = 6;
[a, b] = [b, a];
```