划分数组——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 ] ]
广告
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP