| 
									
										
										
										
											2018-10-12 15:37:13 -04:00
										 |  |  | --- | 
					
						
							|  |  |  | title: Remove an Item from an Array | 
					
						
							|  |  |  | --- | 
					
						
							|  |  |  | ## Remove an Item from an Array
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-05-16 02:31:37 -05:00
										 |  |  | ### Solution
 | 
					
						
							|  |  |  | ```javascript | 
					
						
							|  |  |  | const immutableReducer = (state = [0,1,2,3,4,5], action) => { | 
					
						
							|  |  |  |   switch(action.type) { | 
					
						
							|  |  |  |     case 'REMOVE_ITEM': | 
					
						
							|  |  |  |       // don't mutate state here or the tests will fail | 
					
						
							|  |  |  |       return [...state.slice(0, action.index), ...state.slice(action.index + 1, state.length)]; | 
					
						
							|  |  |  |       // or return state.slice(0, action.index).concat(state.slice(action.index + 1, state.length)); | 
					
						
							|  |  |  |     default: | 
					
						
							|  |  |  |       return state; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | }; | 
					
						
							| 
									
										
										
										
											2018-10-12 15:37:13 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-05-16 02:31:37 -05:00
										 |  |  | const removeItem = (index) => { | 
					
						
							|  |  |  |   return { | 
					
						
							|  |  |  |     type: 'REMOVE_ITEM', | 
					
						
							|  |  |  |     index | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2018-10-12 15:37:13 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-05-16 02:31:37 -05:00
										 |  |  | const store = Redux.createStore(immutableReducer); | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ### Notes
 | 
					
						
							|  |  |  | * array.slice(fromIndex, untilIndex) returns a new array | 
					
						
							|  |  |  | * 1st slice from the first item's index (0 inclusive) until indexToRemove(action.index exclusive) | 
					
						
							|  |  |  | * 2nd slice from item right after indexToRemove (action.index + 1 inclusive) until length (last item's index + 1 exclusive) | 
					
						
							|  |  |  | * since slice returns a new array, combine both parts with [...array1, ...array2] spread operator | 
					
						
							|  |  |  | * or combine them with .concat() |