Как Реализуйте описанную функцию 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. Потестируйте ее работу. |
<!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 |
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> |
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> |
Часовой пояс GMT +3, время: 04:28. |