Javascript 摘录;";数组中的值

Javascript 摘录;";数组中的值,javascript,Javascript,目标 “矮胖猴子”问题:从给定数组('arr')和数字('size')创建一个新的多维数组。新的多维数组应创建与“size”变量相等的数组长度 示例#1 chunk(['a', 'b', 'c', 'd'], 2); var answer = []; function chunk(arr,size){ //do something }; return answer answer = [['a','b'],['c','d']]; 预期答案#1 chunk(['a', 'b', 'c', 'd

目标

“矮胖猴子”问题:从给定数组('arr')和数字('size')创建一个新的多维数组。新的多维数组应创建与“size”变量相等的数组长度

示例#1

chunk(['a', 'b', 'c', 'd'], 2);
var answer = [];
function chunk(arr,size){
//do something
};

return answer
answer = [['a','b'],['c','d']];
预期答案#1

chunk(['a', 'b', 'c', 'd'], 2);
var answer = [];
function chunk(arr,size){
//do something
};

return answer
answer = [['a','b'],['c','d']];

示例#2

answer = [['a','b','c'],['d']];
下面是一个当元素/大小为奇数时的示例-在这种情况下,预期结果是有一个“余数”组

预期答案#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()中的循环、.slice()等,但没有结果。我所有的方法都会在阵列中循环,但不会“配对”
  • 我把事情复杂化了吗?有没有比我的伪代码/方法更直接的方法

  • 您可以使用递归函数:

    功能块(arr,大小){
    如果(!arr.length)返回[];
    返回[arr.slice(0,size)].concat(chunk(arr.slice(size),size));
    }
    
    或循环:

    功能块(arr,大小){
    arr=arr.slice();
    var-ret=[];
    而(arr.length)ret.push(arr.拼接(0,尺寸));
    返回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;
    };
    
    var chunk=函数(arr,大小){
    var-res=[];
    对于(变量i=0;i

    请参见

    这是我的解决方案。如果输入数组不是
    大小的倍数
    ,则结果中的最后一组将包含剩余项

    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;
    }
    
    功能块(arr,大小){
    变量arr_size=arr.length,
    无组=阵列尺寸/尺寸,
    我
    最终=[];
    如果(无组==0){
    返回arr;
    }
    
    对于(i=0;isomething,如
    while(x=arr.splice(-2,2).length)array2.push(x);
    您希望将元素分组为两组的平均时间?它始终是
    大小的数组倍数的len
    ?@dandavis我的分析正确吗:您使用的是splice()是否在索引中循环,然后删除最近记录的值?@Vasilenicus抱歉-我不太理解你的问题。关于目标,我尝试将原始数组拆分为与“大小”参数相等的组(例如size=3,因此我应该将原始数组拆分为新数组,每个数组中有3个元素)使用
    array.Splice
    …给我几分钟的时间制作一个插入器。谢谢你的回答。