42 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			42 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| 
								 | 
							
								---
							 | 
						||
| 
								 | 
							
								title: Refactor Global Variables Out of Functions
							 | 
						||
| 
								 | 
							
								---
							 | 
						||
| 
								 | 
							
								## Refactor Global Variables Out of Functions
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								- If you're having trouble with changing bookList, try using a copy of the array in your functions. 
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								- Here's some more information about [how JavaScript handles function arguments](https://codeburst.io/javascript-passing-by-value-vs-  reference-explained-in-plain-english-8d00fd06a47c).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								##  Basic Code Solution:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Solution 1
							 | 
						||
| 
								 | 
							
								```javascript
							 | 
						||
| 
								 | 
							
								function add (arr, bookName) {
							 | 
						||
| 
								 | 
							
								  let newArr = [...arr];  // Copy the bookList array to a new array.
							 | 
						||
| 
								 | 
							
								  newArr.push(bookName);  // Add bookName parameter to the end of the new array.
							 | 
						||
| 
								 | 
							
								  return newArr; // Return the new array.
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function remove (arr, bookName) {
							 | 
						||
| 
								 | 
							
								  let newArr = [...arr];  // Copy the bookList array to a new array.
							 | 
						||
| 
								 | 
							
								  if (newArr.indexOf(bookName) >= 0) {   // Check whether the bookName parameter is in new array.
							 | 
						||
| 
								 | 
							
								    /.
							 | 
						||
| 
								 | 
							
								    newArr.splice(newArr.indexOf(bookName), 1); // Remove the given paramater from the new array.
							 | 
						||
| 
								 | 
							
								    return newArr; // Return the new array.
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Solution 2
							 | 
						||
| 
								 | 
							
								```javascript
							 | 
						||
| 
								 | 
							
								function add (list,bookName) {
							 | 
						||
| 
								 | 
							
								  return [...list, bookName];
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function remove (list,bookName) {
							 | 
						||
| 
								 | 
							
								  if (list.indexOf(bookName) >= 0) {
							 | 
						||
| 
								 | 
							
								    return list.filter((item) => item !== bookName);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								```
							 |