 
			
				21.06.2021, 21:35
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 07.05.2021 
					
					
					
						Сообщений: 16
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
			
			 
				Как Реализуйте описанную функцию normalizeArr. Потестируйте ее работу.
			 
			
		
		
		
		Нехватка элементов в массиве при создании таблицы 
Пусть у нас дан вот такой одномерный массив:  
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];  
Пусть теперь мы хотим сделать из него двухмерный массив с 4-мя элементами в каждом подмассиве.  
После применения функции convertArr у нас получится следующий двухмерный массив:  
let arr = [[1, 2, 3, 4], [5, 6, 7, 8], [9]];  
Как вы видите, в последнему подмассиву не хватило элементов и в нем оказалось только число 9.  
Если передать такой двухмерный массив в функцию createTableByArr, то она создаст неправильную таблицу - в последнем ряду таблицы будет не четыре td, а один.  
Для решения проблемы сделаем функцию normalizeArr, которая первый параметром будет принимать двухмерный массив, вторым параметром - количество элементов в подмассиве, а третьим - заполнитель.  
Своим результатом функция должна возвращать "нормализованный" массив: массив, последний элемент которого будет содержать нужное количество элементов. Если этих элементов изначально было меньше, чем нужно функция будет добавлять нужное количество элементов-заполнителей.  
Смотрите пример работы функции:  
let arr = [[1, 2, 3, 4], [5, 6, 7, 8], [9]]; // выведет [[1, 2, 3, 4], [5, 6, 7, 8], [ 
9, '-', '-', '-']]:   
console.log(normalizeArr(arr, 4, '-'));  
Тогда код для создания таблицы из одномерного массива станет выглядеть так:  
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]; let cols = 4; let twoDimArr = convertArr(arr, cols); let normalTwoDimArr = normalizeArr(twoDimArr, cols, '');  
let table = createTableByArr(normalTwoDimArr);  
 
Реализуйте описанную функцию normalizeArr. Потестируйте ее работу. 
		
	
		
		
		
		
		
		
	
		
			
			
	
			
			
			
			
			
				 
			
			
			
			
			
			
				
			
			
			
		 
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				21.06.2021, 21:35
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 07.05.2021 
					
					
					
						Сообщений: 16
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
<!DOCTYPE HTML>
<html>
<head>
    <meta charset="utf-8">
    <title>focusout</title>
</head>
<body>
    <script>
        function normalizeArr(arr, cols, box) {
            let lastElem = arr.pop();
            for (let i = 0; i < cols; i++) {
                if (lastElem[i] == undefined) {
                    lastElem[i] = box;}
            }
            arr.push(lastElem);
            return arr;
        }
        console.log(normalizeArr(arr, 4, '-'));
    </script>
</body>
</html
 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				21.06.2021, 21:56
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 27.05.2010 
					
					
					
						Сообщений: 33,150
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		javascript888,
  
<script>
        let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
        function normalizeArr(arr, cols, box) {
            let length = cols - (arr.length % cols || cols);
            for (; length--; ) arr.push(box);
            length = arr.length / cols;
            return Array.from({length}, (_, i) => arr.slice(i *= cols, i + cols));
        }
        document.write(JSON.stringify(normalizeArr(arr, 4, '-')));
    </script>
 
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось рони, 21.06.2021 в 23:12.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				21.06.2021, 22:06
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 27.05.2010 
					
					
					
						Сообщений: 33,150
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		javascript888,
  
<script>
        let arr = [[1, 2, 3, 4], [5, 6, 7, 8], [9]];
        function normalizeArr(arr, cols, box) {
            return Array.from(arr, (a, i) => (i = a.length) == cols ? a : (a.length = cols,a.fill(box, i, cols)));
        }
        document.write(JSON.stringify(normalizeArr(arr, 4, '-')));
    </script>
 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 |  
  |