2.5 KiB
2.5 KiB
id, title, challengeType
| id | title | challengeType |
|---|---|---|
| 587d7b88367417b2b2512b47 | Use the Rest Operator with Function Parameters | 1 |
Description
function howMany(...args) {The rest operator eliminates the need to check the
return "You have passed " + args.length + " arguments.";
}
console.log(howMany(0, 1, 2)); // You have passed 3 arguments
console.log(howMany("string", null, [1, 2, 3], { })); // You have passed 4 arguments.
args array and allows us to apply map(), filter() and reduce() on the parameters array.
Instructions
sum so that it uses the rest operator and it works in the same way with any number of parameters.
Tests
tests:
- text: 'The result of <code>sum(0,1,2)</code> should be 3'
testString: 'assert(sum(0,1,2) === 3, "The result of <code>sum(0,1,2)</code> should be 3");'
- text: 'The result of <code>sum(1,2,3,4)</code> should be 10'
testString: 'assert(sum(1,2,3,4) === 10, "The result of <code>sum(1,2,3,4)</code> should be 10");'
- text: The result of <code>sum(5)</code> should be 5
testString: 'assert(sum(5) === 5, "The result of <code>sum(5)</code> should be 5");'
- text: The result of <code>sum()</code> should be 0
testString: 'assert(sum() === 0, "The result of <code>sum()</code> should be 0");'
- text: The <code>sum</code> function uses the <code>...</code> spread operator on the <code>args</code> parameter.
testString: 'getUserInput => assert(getUserInput("index").match(/function\s+sum\s*\(\s*...args\s*\)\s*{/g), "The <code>sum</code> function uses the <code>...</code> spread operator on the <code>args</code> parameter.");'
Challenge Seed
const sum = (function() {
"use strict";
return function sum(x, y, z) {
const args = [ x, y, z ];
return args.reduce((a, b) => a + b, 0);
};
})();
console.log(sum(1, 2, 3)); // 6
Solution
// solution required