[英]Extract “N” Values from an Array
目的
“Chunky Monkey”問題:從給定數組('arr')和數字('size')創建一個新的多維數組。 新的多維數組應該創建等於'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']];
我的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);
質詢
您可以使用遞歸函數:
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;
}
您可以使用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;
};
見演示
這是我的解決方案。 如果輸入數組不是size
倍數,則result中的最后一個組將包含其余項
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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.