编写一个函数,将数组(第一个参数)拆分为大小的长度(第二个参数),并将它们作为多维数组返回

时间:2015-10-02 17:38:40

标签: javascript

我正在处理一个javascript问题,要求我:编写一个将数组(第一个参数)拆分为大小长度(第二个参数)的函数,并将它们作为多维数组返回。例如,输入块([0,1,2,3,4,5],2)应该返回'chunked arrays':[[0,1],[2,3],[4,5]] 。我得到的错误是无法设置未定义的属性'0'。请帮忙。

function chunk(arr, size) {

  var k;
  var a=[[]];
  var num=0;

  for(var j=0;j<(arr.length/size);j++){

  for(var i=num,k=0; k<size ;i++,k++)
    {
     a[j][k]=arr[i];
    }

    num+=size;
  }
 return a;
}

chunk(["a", "b", "c", "d"], 2, "");

1 个答案:

答案 0 :(得分:2)

您可以使用 splice()

简化代码

&#13;
&#13;
function chunk(arr, size) {
  var a = [];
  while (arr.length > 0) {
    a.push(arr.splice(0, size));
  }
  return a;
}

console.log(chunk(["a", "b", "c", "d"], 2));
&#13;
&#13;
&#13;

在您的代码中,您只是初始化一个内部数组,而是需要使用索引

初始化for循环中的数组

&#13;
&#13;
function chunk(arr, size) {

  var k;
  var a = [];
  var num = 0;

  for (var j = 0; j < (arr.length / size); j++) {
    a[j] = [];
    for (var k = 0; k < size; num++, k++) {
      a[j][k] = arr[num];
    }
  }
  return a;
}

console.log(chunk(["a", "b", "c", "d"], 2));
&#13;
&#13;
&#13;