目的
" Chunky Monkey"问题:从给定数组(' arr')和数字(' size')创建一个新的多维数组。新的多维数组应该创建等于'大小的数组长度。变量
示例#1
chunk(['a', 'b', 'c', 'd'], 2);
var answer = [];
function chunk(arr,size){
//do something
};
return answer
预期回答#1
answer = [['a','b'],['c','d']];
示例#2
下面是一个奇数个元素/大小的例子 - 在这种情况下,预期的结果是有一个"余数"基。
chunk(['a', 'b', 'c', 'd'], 3);
var answer = [];
function chunk(arr,size){
//do something
};
return answer
预期回答#2
answer = [['a','b','c'],['d']];
MY PSEUDO-CODE / APPROACH
var final = [];
function chunk(arr, size) {
//extract number of elements from 'arr' = 'size'
var extract = function{
//HELP! [INSERT LOGIC]
};
//add extracted elements to 'group' array
var group = [extract];
//push 'group' to 'final' array for multidimensional array
final.push(group);
//return final'
return final;
}
chunk(['a', 'b', 'c', 'd'], 2);
问题
答案 0 :(得分:2)
您可以使用递归函数:
function chunk(arr, size) {
if(!arr.length) return [];
return [arr.slice(0, size)].concat(chunk(arr.slice(size), size));
}
或循环:
function chunk(arr, size) {
arr = arr.slice();
var ret = [];
while(arr.length) ret.push(arr.splice(0, size));
return ret;
}
答案 1 :(得分:1)
您可以使用slice
来获取数据块。
var chunk = function (arr, size) {
var res = [];
for (var i = 0; i < arr.length; i += size) {
res.push(arr.slice(i, i + size));
}
return res;
};
请参阅demo
答案 2 :(得分:0)
这是我的解决方案。如果输入数组不是function chunk(arr, size) {
var arr_size = arr.length,
no_groups = arr_size/size,
i,
final = [];
if (no_groups == 0){
return arr;
}
for(i=0;i<no_groups;i++){
final.push(arr.splice(0, size ));
}
return final;
}
的倍数,则结果中的最后一个组将包含剩余项
(Interval, BusinessID)