我们需要编写一个函数,该函数将一维数组作为第一个参数,将数字n作为第二个参数,并且我们必须在父数组内部创建n个子数组(如果可能,**)并将元素划分为一个数组相应地。
**如果数组包含9个元素,而我们要求制作4个子数组,则将每个子数组中的2个元素相除会创建5个子数组,而每个3个会创建3个子数组,因此在这种情况下,我们必须回退到最接近的最低级别(在这种情况下为3个) ),因为在某些特殊情况下,除了最后一个元素外,我们的要求是在每个子数组中分配相等数量的元素。
例如-
// if the input array is: const arr = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I']; //这个数字是2- //那么输出应该是: const output = [ [ 'A', 'B', 'C', 'D', 'E' ], [ 'F', 'G', 'H', 'I' ] ];
让我们为该函数编写代码-
const arr = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I']; const splitArray = (arr, rows) => { const itemsPerRow = Math.ceil(arr.length / rows); return arr.reduce((acc, val, ind) => { const currentRow = Math.floor(ind / itemsPerRow); if(!acc[currentRow]){ acc[currentRow] = [val]; }else{ acc[currentRow].push(val); }; return acc; }, []); }; console.log(splitArray(arr, 2));
输出结果
控制台中的输出将为-
[ [ 'A', 'B', 'C', 'D', 'E' ], [ 'F', 'G', 'H', 'I' ] ]