86 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			86 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| ---
 | |
| id: 596a8888ab7c01048de257d5
 | |
| title: Deepcopy
 | |
| challengeType: 5
 | |
| forumTopicId: 302247
 | |
| dashedName: deepcopy
 | |
| ---
 | |
| 
 | |
| # --description--
 | |
| 
 | |
| 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:
 | |
| 
 | |
| <ul>
 | |
|   <li>Objects with properties that are functions</li>
 | |
|   <li>Date objects or object with properties that are Date objects</li>
 | |
|   <li>RegEx or object with properties that are RegEx objects</li>
 | |
|   <li>Prototype copying</li>
 | |
| </ul>
 | |
| 
 | |
| # --hints--
 | |
| 
 | |
| `deepcopy` should be a function.
 | |
| 
 | |
| ```js
 | |
| assert(typeof deepcopy === 'function');
 | |
| ```
 | |
| 
 | |
| `deepcopy({test: "test"})` should return an object.
 | |
| 
 | |
| ```js
 | |
| assert(typeof deepcopy(obj1) === 'object');
 | |
| ```
 | |
| 
 | |
| `deepcopy` should not return the same object that was provided.
 | |
| 
 | |
| ```js
 | |
| assert(deepcopy(obj2) != obj2);
 | |
| ```
 | |
| 
 | |
| When passed an object containing an array, `deepcopy` should return a deep copy of the object.
 | |
| 
 | |
| ```js
 | |
| assert.deepEqual(deepcopy(obj2), obj2);
 | |
| ```
 | |
| 
 | |
| When passed an object containing another object, `deepcopy`  should return a deep copy of the object.
 | |
| 
 | |
| ```js
 | |
| assert.deepEqual(deepcopy(obj3), obj3);
 | |
| ```
 | |
| 
 | |
| # --seed--
 | |
| 
 | |
| ## --after-user-code--
 | |
| 
 | |
| ```js
 | |
| const obj1 = { test: 'test' };
 | |
| const obj2 = {
 | |
|   t: 'test',
 | |
|   a: ['an', 'array']
 | |
| };
 | |
| const obj3 = {
 | |
|   t: 'try',
 | |
|   o: obj2
 | |
| };
 | |
| ```
 | |
| 
 | |
| ## --seed-contents--
 | |
| 
 | |
| ```js
 | |
| function deepcopy(obj) {
 | |
| 
 | |
|   return true;
 | |
| }
 | |
| ```
 | |
| 
 | |
| # --solutions--
 | |
| 
 | |
| ```js
 | |
| function deepcopy(obj) {
 | |
|   return JSON.parse(JSON.stringify(obj));
 | |
| }
 | |
| ```
 |