划分数组——JavaScript


假设我们要编写一个函数,它将一个包含字符串/数字文本的数组 arr 作为第一个参数,一个数字 n 作为第二个参数。

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

  • 第一个元素进入第一个子数组,第二个进入第二个子数组,第三个进入第三个子数组,依此类推。
  • 在每个子数组中有一个元素之后,我们再次从第一个子数组开始,用它的第二个元素填充第一个子数组。
  • 类似地,当所有子数组只有两个元素后,我们在第一个数组中填充第三个元素,依此类推。

举例来说 −

如果输入数组是 −

 
const input = [656, 756, 5345, 67, 43, 76, 54, 768, 34];

并且数字 n 是 3,则输出应该是 −

const output = [
   [ 656, 67, 54 ],
   [ 756, 43, 768 ],
   [ 5345, 76, 34 ]
];

我们将 Array.prototype.reduce() 方法应用于原始数组,以构建所需数组。

示例

代码如下 −

const input = [656, 756, 5345, 67, 43, 76, 54, 768, 34];
const divideArray = (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(divideArray(input, 3));

输出

这会在控制台中产生以下输出 −

[ [ 656, 67, 54 ], [ 756, 43, 768 ], [ 5345, 76, 34 ] ]

更新于: 2020-09-18

483 次浏览

开始你的 职业

完成课程,获得认证

开始
广告