我应该编写一个函数,将数组(第一个参数)分成长度为 size(第二个参数)的组,并将它们作为二维数组返回。 因此,chunkArrayInGroups(["a", "b", "c", "d"], 2) 应该返回 [["a", "b"], ["c", "d"]]
function chunkArrayInGroups(arr, size) {
// Break it up.
var result=[];
for (var i=0;i<=Math.ceil(arr.length/size);i++){
var j=0;
if(i!== 0){
j+=size;
size+=size;
}
result[i] = arr.slice(j , size);
}
//return arr.length/size
//results in 1.5
return result;
// results [["a", "b"], ["c", "d"]]
}
chunkArrayInGroups(["a", "b", "c", "d"], 2);
我得到了想要的结果,但我对我的解决方案不是很满意, 还有,更重要的是 “如果” arr.length = 4;并且,尺寸=2;那为什么是 arr.length/size = 1 ? 不应该是 4/2=2 吗?
最佳答案
我会让 i
迭代每个组开始的原始数组中的索引,而不是组的索引。
function chunkArrayInGroups(arr, size) {
var result = [];
for (var i=0; i<arr.length; i+=size)
result.push(arr.slice(i, i+size));
return result;
}
还要考虑一个生成器:
function* chunkArrayInGroups(arr, size) {
for (var i=0; i<arr.length; i+=size)
yield arr.slice(i, i+size);
}
关于javascript - 将数组拆分为组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37644121/