划分数组——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 ] ]
广告