--- title: Deepcopy id: 596a8888ab7c01048de257d5 challengeType: 5 --- ## Description
Task:

Write a function that returns a deep copy of a given object.

The copy must not be the same object that was given.

This task will not test for:

Objects with properties that are functions Date objects or object with properties that are Date objects RegEx or object with properties that are RegEx objects Prototype copying
## Instructions
## Tests
```yml tests: - text: deepcopy should be a function. testString: assert(typeof deepcopy === 'function', 'deepcopy should be a function.'); - text: 'deepcopy({test: "test"}) should return an object.' testString: 'assert(typeof deepcopy(obj1) === ''object'', ''deepcopy({test: "test"}) should return an object.'');' - text: Should not return the same object that was provided. testString: assert(deepcopy(obj2) != obj2, 'Should not return the same object that was provided.'); - text: When passed an object containing an array, should return a deep copy of the object. testString: assert.deepEqual(deepcopy(obj2), obj2, 'When passed an object containing an array, should return a deep copy of the object.'); - text: When passed an object containing another object, should return a deep copy of the object. testString: assert.deepEqual(deepcopy(obj3), obj3, 'When passed an object containing another object, should return a deep copy of the object.'); ```
## Challenge Seed
```js function deepcopy (obj) { // Good luck! return true; } ```
### After Test
```js const obj1 = { test: 'test' }; const obj2 = { t: 'test', a: ['an', 'array'] }; const obj3 = { t: 'try', o: obj2 }; ```
## Solution
```js function deepcopy(obj) { return JSON.parse(JSON.stringify(obj)); } ```