--- id: 587d7b7b367417b2b2512b13 title: Copy an Array with the Spread Operator challengeType: 1 --- ## Description
While slice() allows us to be selective about what elements of an array to copy, among several other useful tasks, ES6's new spread operator allows us to easily copy all of an array's elements, in order, with a simple and highly readable syntax. The spread syntax simply looks like this: ... In practice, we can use the spread operator to copy an array like so: ```js let thisArray = [true, true, undefined, false, null]; let thatArray = [...thisArray]; // thatArray equals [true, true, undefined, false, null] // thisArray remains unchanged, and is identical to thatArray ```
## Instructions
We have defined a function, copyMachine which takes arr (an array) and num (a number) as arguments. The function is supposed to return a new array made up of num copies of arr. We have done most of the work for you, but it doesn't work quite right yet. Modify the function using spread syntax so that it works correctly (hint: another method we have already covered might come in handy here!).
## Tests
```yml tests: - text: copyMachine([true, false, true], 2) should return [[true, false, true], [true, false, true]] testString: assert.deepEqual(copyMachine([true, false, true], 2), [[true, false, true], [true, false, true]]); - text: copyMachine([1, 2, 3], 5) should return [[1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3]] testString: assert.deepEqual(copyMachine([1, 2, 3], 5), [[1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3]]); - text: copyMachine([true, true, null], 1) should return [[true, true, null]] testString: assert.deepEqual(copyMachine([true, true, null], 1), [[true, true, null]]); - text: copyMachine(["it works"], 3) should return [["it works"], ["it works"], ["it works"]] testString: assert.deepEqual(copyMachine(['it works'], 3), [['it works'], ['it works'], ['it works']]); - text: The copyMachine function should utilize the spread operator with array arr testString: assert(removeJSComments(code).match(/\.\.\.arr/)); ```
## Challenge Seed
```js function copyMachine(arr, num) { let newArr = []; while (num >= 1) { // change code below this line // change code above this line num--; } return newArr; } // change code here to test different cases: console.log(copyMachine([true, false, true], 2)); ```
### After Test
```js const removeJSComments = str => str.replace(/\/\*[\s\S]*?\*\/|\/\/.*$/gm, ''); ```
## Solution
```js function copyMachine(arr,num){ let newArr=[]; while(num >=1){ // change code below this line newArr.push([...arr]); //change code above this line num--; } return newArr; } console.log(copyMachine([true, false, true], 2)); ```