用JavaScript分块数组

我们需要编写一个函数chunk(),该函数将字符串/数字文字的数组arr作为第一个参数,将数字n作为第二个参数。

我们需要返回一个n个子数组的数组,每个子数组最多包含arr.length / n个元素。而且元素的分布应该像这样-

第一个元素进入第一个子数组,第二个进入第二个子数组,第三个进入第三个子数组,依此类推。在每个子数组中都有一个元素后,我们再次从第一个子数组中填充第二个元素开始。同样,当所有子数组只有两个元素之后,我们将第一个元素填充到第三个数组中,依此类推。

例如-

// if the input array is:
const input = [1, 2, 3, 4, 5, 6];
//那么输出应该是:
const output = [
   [1, 4],
   [2, 5],
   [3, 6]
];

让我们为该函数编写代码,我们将在原始数组上使用Array.prototype.reduce()方法来构造所需的数组。为此的代码将是-

示例

const input = [1, 2, 3, 4, 5, 6, 7, 8, 9];
const chunk = (arr, size) => {
   return arr.reduce((acc, val, ind) => {
      const subIndex = ind % size;
      if(!Array.isArray(acc[subIndex])){
         acc[subIndex] = [val];
      } else {
         acc[subIndex].push(val);
      };
      return acc;
   }, []);
};
console.log(chunk(input, 4));

输出结果

控制台中的输出将为-

[ [ 1, 5, 9 ], [ 2, 6 ], [ 3, 7 ], [ 4, 8 ] ]