目标
“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']];
我的伪代码/方法
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);
问题
- 我一直在寻找@.forEach()、for(in) 循环、.slice() 等,但无济于事。我所有的方法都会导致循环遍历数组,但不会“配对”。
- 我是不是把事情复杂化了?有没有比我的伪代码/方法更直接的方法?
最佳答案
您可以使用递归函数:
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;
}
关于javascript - 从数组中提取 "N"值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30225992/