Use the Rest Operator with Function Parameters_help

Tell us what’s happening:
I need help understanding where i misplaced the rest operator.

Your code so far


const sum = (function() {
  "use strict";
  return function sum(...z) {
    const args = [ ...z ];
    return args.reduce((a, b) => a + b, 0);
  };
})();
console.log(sum(1, 2, 3)); // 6

Your browser information:

User Agent is: Mozilla/5.0 (X11; CrOS x86_64 12105.100.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.144 Safari/537.36.

Link to the challenge:
https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/es6/use-the-rest-operator-with-function-parameters

The sum function uses the ... spread operator on the args parameter.

You didn’t do anything wrong, the prompt is just a little funky. I simply renamed your variables and all the tests passed.

const sum = (function() {
  "use strict";
  return function sum(...args) {
    const z = [ ...args ];
    return z.reduce((a, b) => a + b, 0);
  };
})();
console.log(sum(1, 2, 3)); // 6
1 Like

Just rename the rest parameter as requested into “args”.
Second, you don’t need to create an array, first because this arrow function has an implicit conditional return statement in case the sum operation is not possible because of implicit empty array:

(a, b) => a + b, 0

return a + b, if b is not defined return a + 0

1 Like