Javascript 根据JS中所需的组大小将一维数组转换为多维数组的更好方法

Javascript 根据JS中所需的组大小将一维数组转换为多维数组的更好方法,javascript,arrays,multidimensional-array,Javascript,Arrays,Multidimensional Array,我对JS比较陌生,我正在处理一个问题,该问题要求将数组(第一个参数)拆分为大小相同的组(第二个参数),并将其作为多维数组返回。 我的问题适用于所有测试用例,但它建议使用array`push()`方法。我试了好几次,都没能成功。我想我被引用数组搞砸了。我最终为每个元素声明了一个新数组。我一次对每个元素进行更经典的深度复制。我没有返回并再次尝试“push()”方法。必须有一种更有效的方法来做到这一点。我想写好代码。希望能看到更好的版本。 谢谢 功能块(arr,大小){ var组=0; var计数器=

我对JS比较陌生,我正在处理一个问题,该问题要求将数组(第一个参数)拆分为大小相同的组(第二个参数),并将其作为多维数组返回。 我的问题适用于所有测试用例,但它建议使用array`push()`方法。我试了好几次,都没能成功。我想我被引用数组搞砸了。我最终为每个元素声明了一个新数组。我一次对每个元素进行更经典的深度复制。我没有返回并再次尝试“push()”方法。必须有一种更有效的方法来做到这一点。我想写好代码。希望能看到更好的版本。 谢谢

功能块(arr,大小){
var组=0;
var计数器=0;
var偶数=假;
var奇数=假;
如果(arr.length%size==0){
组=阵列长度/尺寸;
偶数=真;
}否则{
组=数学单元(arr.length/size);
奇数=真;
}
var newArr=新阵列(组);
对于(变量i=0;i
使用
Array.prototype.slice
,可以用更短的方式编写函数:

function chunk(array, size) {
  var result = []
  for (var i=0;i<array.length;i+=size)
    result.push( array.slice(i,i+size) )
  return result
  }
功能块(数组、大小){
var结果=[]

对于(var i=0;i您可以从数组对象中尝试slice方法

var arr = [1, 2, 3, 4, 5, 6];
var newArr = [];
newArr.push(arr.slice(0, arr.length / 2));
newArr.push(arr.length / 2, arr.length);
这只是一个肤浅的实现,但您可以在编写得更好的函数中使用相同的概念

下面是一个示例函数:

var arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14];

function toChunks(arr, size) {
  var i = 0,
      chunks = [];

  for (; i < arr.length; i += size) {
      chunks.push(arr.slice(i, i + size););
  }

  return chunks;
}

toChunks(arr, 2);
var-arr=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14];
功能块(arr、尺寸){
var i=0,
块=[];
对于(;i
var arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14];

function toChunks(arr, size) {
  var i = 0,
      chunks = [];

  for (; i < arr.length; i += size) {
      chunks.push(arr.slice(i, i + size););
  }

  return chunks;
}

toChunks(arr, 2);