假设我有一个大于0的整数n
和一个这样的数组:
var array = [1, 2, 5, 6, 8, 9, 12, 13, 17...] //random values
我如何迭代这个数组,一次获取值n
(并将其放入2D数组中)?
例如,如果n
为3,我希望返回值为
[[1, 2, 5], [6, 8, 9], [12, 13, 17]...]
代码就像这样:
var array = [];
for (var i = 0; i < array.length; i += 3) {
var first = array[i];
var second = array[i+1];
var third = array[i+2];
array.push([
first, second, third
]);
}
问题在于我有固定值来获取我的对象(i
,i+1
等。)
如果我有一个未知的整数,那么向右递增到n
将不起作用。
我将如何实现这一目标?
答案 0 :(得分:1)
使用slice
获取块并浏览数组:
const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15];
const partition = (n, arr) => {
const result = [];
let i = 0;
while(i < arr.length) {
result.push(arr.slice(i, i + n));
i = i + n;
}
return result;
};
console.log(partition(1, arr));
console.log(partition(2, arr));
console.log(partition(3, arr));
console.log(partition(4, arr));