45 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			45 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
|   | --- | ||
|  | title: Use Caution When Reinitializing Variables Inside a Loop | ||
|  | --- | ||
|  | ## Use Caution When Reinitializing Variables Inside a Loop
 | ||
|  | 
 | ||
|  | - This challenge must be solved by redefining the scope of `row[]`. | ||
|  | - Below is an example of the desired matrix. | ||
|  | ```javascript | ||
|  | [ | ||
|  | [0][0], | ||
|  | [0][0], | ||
|  | [0][0] | ||
|  | ] | ||
|  | ``` | ||
|  | - However the current matrix - seen below - is far from the desired matrix | ||
|  | ```javascript | ||
|  | [ | ||
|  | [0][0][0][0][0][0], | ||
|  | [0][0][0][0][0][0], | ||
|  | [0][0][0][0][0][0] | ||
|  | ] | ||
|  | ``` | ||
|  | - This error occurs due to the `row[]` array being declared as a global variable outside of the nested for loop. | ||
|  | - However, to fill the matrix correctly the `row[]` array must be reset after each iteration of the outer loop. | ||
|  | 
 | ||
|  | ## Solution 
 | ||
|  | ```javascript | ||
|  | function zeroArray(m, n) { | ||
|  |   let newArray = []; | ||
|  |   for (let i = 0; i < m; i++) { | ||
|  |      let row = []; /* <-----  row has been declared inside the outer loop.  | ||
|  |      Now a new row will be initialised during each iteration of the outer loop allowing  | ||
|  |      for the desired matrix. */ | ||
|  |     for (let j = 0; j < n; j++) { | ||
|  | 
 | ||
|  |       row.push(0); | ||
|  |     } | ||
|  |     newArray.push(row); | ||
|  |   } | ||
|  |   return newArray; | ||
|  | } | ||
|  | let matrix = zeroArray(3, 2); | ||
|  | console.log(matrix); | ||
|  | ``` |