freeCodeCamp/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/es6/use-destructuring-assignment-to-pass-an-object-as-a-functions-parameters.english.md
ML d824c77012 Move the comment on line 71 to its own line (#38036)
* Move the comment on line 71 to its own line

The comment "use function argument destructuring" was on the same line as some code, and when displayed as a challenge it returned to a new line and was not commented out.

* Update line 71 comment per @manish-giri suggestion

Move the comment "use function argument destructuring" to above the "change code below this line" comment for clarity. Based on conversation in this pull request https://github.com/freeCodeCamp/freeCodeCamp/pull/38036
2020-01-15 08:17:34 +05:30

2.3 KiB

id, title, challengeType, forumTopicId
id title challengeType forumTopicId
587d7b8a367417b2b2512b4d Use Destructuring Assignment to Pass an Object as a Function's Parameters 1 301217

Description

In some cases, you can destructure the object in a function argument itself. Consider the code below:
const profileUpdate = (profileData) => {
  const { name, age, nationality, location } = profileData;
  // do something with these variables
}

This effectively destructures the object sent into the function. This can also be done in-place:

const profileUpdate = ({ name, age, nationality, location }) => {
  /* do something with these fields */
}

This removes some extra lines and makes our code look neat. This has the added benefit of not having to manipulate an entire object in a function — only the fields that are needed are copied inside the function.

Instructions

Use destructuring assignment within the argument to the function half to send only max and min inside the function.

Tests

tests:
  - text: <code>stats</code> should be an <code>object</code>.
    testString: assert(typeof stats === 'object');
  - text: <code>half(stats)</code> should be <code>28.015</code>
    testString: assert(half(stats) === 28.015);
  - text: Destructuring should be used.
    testString: assert(code.replace(/\s/g, '').match(/half=\({\w+,\w+}\)/));
  - text: Destructured parameter should be used.
    testString: assert(!code.match(/stats\.max|stats\.min/));

Challenge Seed

const stats = {
  max: 56.78,
  standard_deviation: 4.34,
  median: 34.54,
  mode: 23.87,
  min: -0.75,
  average: 35.85
};

// use function argument destructuring
// change code below this line
const half = (stats) => (stats.max + stats.min) / 2.0; 
// change code above this line

console.log(stats); // should be object
console.log(half(stats)); // should be 28.015

Solution

const stats = {
  max: 56.78,
  standard_deviation: 4.34,
  median: 34.54,
  mode: 23.87,
  min: -0.75,
  average: 35.85
};

const half = ( {max, min} ) => (max + min) / 2.0;